700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 使用Python中的smtplib模块发送邮件

使用Python中的smtplib模块发送邮件

时间:2019-07-18 10:30:26

相关推荐

使用Python中的smtplib模块发送邮件

一、python对SMTP的支持

SMTP(Simple Mail Transfer Protocol)是简单传输协议,它是一组用于用于由源地址到目的地址的邮件传输规则。

python中对SMTP进行了简单的封装,可以发送纯文本邮件、HTML邮件以及带附件的邮件。

①email模块:负责构建邮件

②smtplib模块:负责发送邮件

二、可以发送不同格式的邮件

2.1 发送纯文本邮件

# 导入发送邮件模块import smtplib# 导入邮件文本from email.mime.text import MIMEText# 1.构建邮件#发送文本格式的邮件message = """那小子真帅。"""msg = MIMEText(message,'plain','utf-8')msg['Subject'] = 'xxx'#标题,主题msg['To'] = 'xxxx@'#收件人msg['From'] = 'xxxx@'#发件人#2.实例化SMTP服务器server = smtplib.SMTP_SSL('',994)#3.登录服务器,第一个参数为邮箱账号,第二个参数为邮箱授权码server.login('xxx@','xxx')#4.发送邮件# 第一个参数为发送方,sender = 'xxx@'# 第二个参数为接受方,列表格式,可以发送多个,receiver = ['xxx@','xxx@']# 第三个参数msg为邮件内容,需要为字符串格式server.sendmail(sender,receiver,msg.as_string())# 5.关闭server.quit()

2.2 发送HTML格式的邮件

与纯文本邮件整体上相同,只是在邮件本体部分有所区别

# 导入发送邮件模块import smtplib# 导入邮件文本from email.mime.text import MIMEText# 1.构建邮件#1.1 发送HTML格式的邮件html = """<h2><a href=''>点我跳转</a></h2>"""msg = MIMEText(html,'html','utf-8')msg['Subject'] = 'xxx'#标题,主题msg['To'] = 'xxxx@'#收件人msg['From'] = 'xxxx@'#发件人#2.实例化SMTP服务器server = smtplib.SMTP_SSL('',994)#3.登录服务器,第一个参数为邮箱账号,第二个参数为邮箱授权码server.login('xxx@','xxx')#4.发送邮件# 第一个参数为发送方,sender = 'xxx@'# 第二个参数为接受方,列表格式,可以发送多个,receiver = ['xxx@','xxx@']# 第三个参数msg为邮件内容,需要为字符串格式server.sendmail(sender,receiver,msg.as_string())# 5.关闭server.quit()

2.3 发送HTML与图片格式的邮件

import smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.mime.image import MIMEImagesender = 'xxx@' # 这里就是你的163邮箱receiver = 'xxx@' # 发给单人时的邮件接收邮箱smtpserver = "" # 邮件服务器,如果是163邮箱那就是这个了,其他的可以自行查找username = 'xxxx@' # 这里还是你的邮箱password = 'xxxxx' # 上面获取的SMTP授权码,相当于是一个密码验证msgRoot = MIMEMultipart('related') # 邮件类型,如果要加图片等附件,就得是这个msgRoot['Subject'] = '监控日报' # 邮件标题,以下设置项都很明了msgRoot['From'] = sendermsgRoot['To'] = receiver # 发给单人# 以下为邮件正文内容,含有一个居中的标题和一张图片content = MIMEText('<html><head><style>#string{text-align:center;font-size:25px;}</style><div id="string">我是居中显示的标题<div></head><body><img src="cid:image1" alt="image1"></body></html>','html','utf-8')# 如果有编码格式问题导致乱码,可以进行格式转换:# content = content.decode('utf-8').encode('gbk')msgRoot.attach(content)# 上面加的图片src必须是cid:xxx的形式,xxx就是下面添加图片时设置的图片id# 添加图片附件fp = open('D:\\Desktop\\83116221721201.jpg', 'rb')msgImage = MIMEImage(fp.read())fp.close()msgImage.add_header('Content-ID', 'image1') # 这个id用于上面html获取图片msgRoot.attach(msgImage)'''# 另外也可以用base64的方法直接加:import base64img_file = open('C:\\Users\\cloudoxou\\Desktop\\img.png','rb')base64_data = base64.b64encode(img_file.read())html = "<img src="https://img-/202613560537880.png" alt="image1">"%(base64_data) # 这里简化了html代码'''# 连接邮件服务器,因为使用SMTP授权码的方式登录,必须是994端口smtp = smtplib.SMTP_SSL(smtpserver,994)smtp.login(username, password)smtp.sendmail(sender, receiver, msgRoot.as_string())smtp.quit()

msg中输入的是邮件正文,因此需要根据具体内容格式选择合适的类型!

关于不同类型文件的对应类型,可参考此链接:HTTP Content-type 对照表

三、注意事项

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