[Python实战应用]Python寄送Gmail电子邮件实战教学
在现今大多数的网站,不管是注册成功、重新设定密码、优惠消息或新商品上架等,都会透过电子邮件来通知客户,是网站中不可或缺的传递消息方式。除此之外,也有开发人员在运行爬虫时,会将所爬取的信息透过电子邮件来通知。从以上的情境可以知道,电子邮件使用的频繁及对网站功能的重要性,所以本文将利用Visual Studio Code开发工具,介绍如何透过Python来寄送电子邮件,并且客制化邮件样版,重点包含:
基本电子邮件内容取得Gmail应用程式密码设定SMTP伺服器(SMTP Server)电子邮件内容增加图片客制化邮件样板(Templates)一、基本电子邮件内容
首先,引用Python email标准函式库(Standard Library)中的MIMEMultipart类别,如下范例:
from importMIMEMultipart在email套件(Package)下的mime(Multipurpose Internet Mail Extensions)子套件,为网际网络媒体类型,定义了在网络上传输电子邮件的格式标准,在其底下的multipart子套件中,MIMEMultipart类别能够让电子邮件的格式包含纯文字或HTML的内容。而一封基本的电子邮件,分别有标题、寄件者、收件者及内容,透过MIMEMultipart物件即可进行各栏位的资料设定,如下范例:
from importMIMEMultipartfrom importMIMETextcontent =MIMEMultipart()#建立MIMEMultipart物件content["subject"]="Learn Code With Mike"#邮件标题content["from"]=""#寄件者content["to"]=""#收件者(MIMEText("Demo python send email"))#邮件内容
范例中,邮件内容使用MIMEMultipart物件的attach方法(Method)进行设定,而内容需引用MIMEText类别来建立物件,第一个参数传入文字内容,第二个参数可指定纯文字或HTML,预设为纯文字。HTML的邮件内容,在本文第五节客制化邮件样版时,再来进行说明。
二、取得Gmail应用程式密码
在Python专案中,要透过Gmail的SMTP伺服器来寄送电子邮件的话,需取得应用程式的专属密码,因为Google认为Python的smtplib函式库是高风险的,所以用原Gmail密码是无法透过应用程式来寄送电子邮件。以下为取得应用程式密码的步骤:
步骤一:进入寄件者的Google帐户。
步骤二:点击左边栏的安全性页签,接着设定两步骤验证。
步骤三:两步骤设定完成后,会看到下方多了应用程序密码。
步骤四:在选取应用程序的地方选择其他。
步骤五:接着输入应用程序的名称,点击产生。
步骤六:最后即可取得应用程序的密码。
三、设定SMTP服务器(SMTP Server)
Python专案中的电子邮件内容完成后,接下来就要设定Gmail的SMTP完全来寄送,设定方式如下范例:
引用smtplib模组(Module),接着根据使用的SMTP完全,透过关键字参数(Keyword Argument)指定服务器位置及埠号。另外,这边利用Python的with陈述式,当邮件寄送完成后,自动释放资源。建立SMTP物件后,接下来利用ehlo()方法来验证SMTP服务器及埠号是否正确,下一步呼叫starttls()方法建立TLS (Transport Layer Security)传输,为一种网络传输安全协定,用来保护资料的安全及完整性。最后登入寄件者的Gmail帐户,并且寄出邮件。这边建议使用Python例外处理机制,因为在寄送电子邮件的过程中,非常有机会发生例外错误。 登入收件者的Gmail,即可看到刚刚所寄出的电子邮件,如下范例:
四、电子邮件内容增加图片
如果想要在电子邮件中加入图片,则需在Python专案中引用MIMEImage类别,并且引用pathlib函式库来读取图片,如下范例: