1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > smtplib email实现邮件发送

smtplib email实现邮件发送

时间:2023-01-28 18:25:19

相关推荐

smtplib email实现邮件发送

目录

发送纯文字邮件

发送HTML邮件

发送图片邮件

发送附件邮件

Python实现发送邮件主要用到smtplib和email模块,其中:

smtplib模块主要负责发送邮件的动作、连接邮箱服务器和登录邮箱等操作。

email模块用于管理电子邮件消息的库,主要负责构造邮件,如发件人、收件人、主题、正文、附件等。

通过smtplib、email模块可以发送纯文字、HTML、图片、带附件的邮件。

发送纯文字邮件

发送纯文字邮件,首先使用email模块编辑邮件信息,如发件人、收件人、邮件主题和邮件内容等,示例代码如下:

fromemail.mime.textimportMIMETextfromemail.headerimportHeadermail_msg="""Python测试邮件..."""message=MIMEText(mail_msg,'plain','utf-8')#邮件内容message['From']=Header("白巧克力LIN",'utf-8')#发件人名称(可以随便起)message['To']=Header("xxx",'utf-8')#收件人名称(可以随便起)message['cc']='xxxxxxxxxxx'#抄送人(可以随便填)message['Subject']=Header('测试邮件','utf-8')#邮件主题message['Date']=''#邮件日期,不可省略,可以随便填,最终日期为系统日期

使用MIMEText()方法编辑邮件内容,其中:第一个参数是邮件内容,第二个参数是文本格式,可选值有plain(原生文本模式)、html(网页文本模式),第三个参数是编码方式。

好了,编辑好邮件信息后,接下来通过smtplib模块实现发送邮件的动作、连接邮箱服务器和登录邮箱,示例代码如下:

importsmtplibsender='xxxxxxxxxxx@'#发件人邮箱receivers=['xxxxxxxxx@','xxxxxxxxx@']#收件人邮箱列表try:smtpObj=smtplib.SMTP_SSL('')#获得邮箱服务器的传输协议证书smtpObj.connect('','服务器端口')#连接邮箱服务器smtpObj.login('登录邮箱','授权码')#登录邮箱smtpObj.sendmail(sender,receivers,message.as_string())#发送邮件print("邮件发送成功")exceptsmtplib.SMTPExceptionase:print(e)

首先使用smtplib.SMTP_SSL()方法获取邮箱服务器的传输协议证书,其传入的参数为邮箱服务器,常见的邮件服务器如下:

谷歌邮箱:,端口号:587;

新浪邮箱:,端口号:25;

网易邮箱:,端口号:25;

Foxmail邮箱:,端口号:25;

QQ邮箱:,端口号:25;

阿里云邮箱:,SSL加密端口:465;非加密端口:25;

获取传输协议证书后,通过connect()方法连接邮箱服务器,再通过login()方法登录邮箱,最后通过sendmail()方法发送邮件。

发送HTML邮件

发送HTML邮件与发送纯文字邮件类似,发送HTML邮件的邮件内容为HTML文本,MIMEText()方法第二个参数为html,示例代码如下:

importsmtplibfromemail.mime.textimportMIMETextfromemail.headerimportHeadermail_msg="""<body>Python测试邮件...</body>"""message=MIMEText(mail_msg,'html','utf-8')#邮件内容message['From']=Header("白巧克力LIN",'utf-8')#发件人名称(可以随便起)message['To']=Header("xxx",'utf-8')#收件人名称(可以随便起)message['cc']='xxxxxxxxxxx'#抄送人(可以随便填)message['Subject']=Header('测试邮件','utf-8')#邮件主题message['Date']=''#邮件日期,不可省略,可以随便填,最终日期为系统日期sender='xxxxxxxxxxx@'#发件人邮箱receivers=['xxxxxxxxx@','xxxxxxxxx@']#收件人邮箱列表try:smtpObj=smtplib.SMTP_SSL('')#获得邮箱服务器的传输协议证书smtpObj.connect('','服务器端口')#连接邮箱服务器smtpObj.login('登录邮箱','授权码')#登录邮箱smtpObj.sendmail(sender,receivers,message.as_string())#发送邮件print("邮件发送成功")exceptsmtplib.SMTPExceptionase:print(e)

通过编写HTML代码使邮件内容样式更加丰富,例如为邮件内容字体加粗、加大,发送表格等。

发送图片邮件

发送图片邮件与发送纯文字、HTML邮件有所不同,编辑邮件信息示例代码如下:

fromemail.mime.imageimportMIMEImagefromemail.mime.textimportMIMETextfromemail.headerimportHeaderfromemail.mime.multipartimportMIMEMultipartmail_msg="""<body><p>测试Python发送带图片的邮件...</p><p>图片如下:</p><p><imgsrc="cid:jpg1"alt="testimage1"></p><p><imgsrc="cid:jpg2"alt="testimage2"></p></body>"""message=MIMEMultipart()#创建可携带各种资源的实例message.attach(MIMEText(mail_msg,'html','utf-8'))#将邮件信息绑定到实例中withopen('1.png','rb')asimage_file:#二进制读取图片msgImage=MIMEImage(image_file.read())#将二进制图片放在msgImage变量中msgImage.add_header('Content-ID','jpg1')#定义图片ID,在HTML文本中引用message.attach(msgImage)#将图片绑定到实例中message['From']=Header("白巧克力LIN",'utf-8')#发件人名称(可以随便起)message['To']=Header("xxx",'utf-8')#收件人名称(可以随便起)message['cc']='xxxxxxxxxxx'#抄送人(可以随便填)message['Subject']=Header('测试邮件','utf-8')#邮件主题message['Date']=''#邮件日期,不可省略,可以随便填,最终日期为系统日期

首先通过MIMEMultipart()方法创建实例,通过attach()方法将MIMEText()方法的邮件信息绑定到实例中,再通过MIMEImage()方法读取的图片存储在变量msgImage中,通过add_header()方法引用图片,通过attach()方法绑定到实例中。

当我们需要发送多张图片时,只需要重复15行到19行代码即可。

接下来通过smtplib模块实现发送邮件的动作、连接邮箱服务器和登录邮箱,示例代码如下:

importsmtplibsender='xxxxxxxxxxx@'#发件人邮箱receivers=['xxxxxxxxx@','xxxxxxxxx@']#收件人邮箱列表try:smtpObj=smtplib.SMTP_SSL('')#获得邮箱服务器的传输协议证书smtpObj.connect('','服务器端口')#连接邮箱服务器smtpObj.login('登录邮箱','授权码')#登录邮箱smtpObj.sendmail(sender,receivers,message.as_string())#发送邮件print("邮件发送成功")exceptsmtplib.SMTPExceptionase:print(e)

发送附件邮件

发送附件邮件与发送图片邮件类似,编辑邮件信息示例代码如下:

fromemail.mime.textimportMIMETextfromemail.headerimportHeaderfromemail.mime.multipartimportMIMEMultipartmail_msg="""Python测试邮件..."""message=MIMEMultipart()#创建可携带各种资源的实例message.attach(MIMEText(mail_msg,'plain','utf-8'))#将邮件信息绑定到实例中att_annex1=MIMEText(open('文件1.xlsx','rb').read(),'base64','utf-8')#读取文件1.xlsx文件并构造附件1att_annex1["Content-Type"]='application/octet-stream'#文件类型,二进制字节流att_annex1["Content-Disposition"]='attachment;filename="1111.xlsx"'#filename为邮件中附件的名字,不支持中文,后缀名要和传输的文件后缀名要一致message.attach(att_annex1)#将附件1绑定到实例中

首先使用MIMEMultipart()方法创建可携带各种资源的实例,通过attach()方法将MIMEText()方法的邮件信息绑定到实例中,通过MIMEText()方法将读取到文件构造成附件,通过将参数Content-Type的值设置为'application/octet-stream'告诉浏览器这是一个字节流(浏览器处理字节流的默认方式是下载),通过参数Content-Disposition来编辑附件的文件名并通过attach将附件绑定到实例中。

接下来通过smtplib模块实现发送邮件的动作、连接邮箱服务器和登录邮箱,示例代码如下:

importsmtplibsender='xxxxxxxxxxx@'#发件人邮箱receivers=['xxxxxxxxx@','xxxxxxxxx@']#收件人邮箱列表try:smtpObj=smtplib.SMTP_SSL('')#获得邮箱服务器的传输协议证书smtpObj.connect('','服务器端口')#连接邮箱服务器smtpObj.login('登录邮箱','授权码')#登录邮箱smtpObj.sendmail(sender,receivers,message.as_string())#发送邮件print("邮件发送成功")exceptsmtplib.SMTPExceptionase:print(e)

这样就成功发送附件邮件了。

好了,关于smtplib、email实现发送邮件就讲到这里。

公众号:白巧克力LIN

该公众号发布Python、数据库、Linux、Flask、自动化测试、Git、算法等相关文章!

- END -

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。