前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用python发送邮件

用python发送邮件

作者头像
用户6021899
发布2021-03-11 15:16:27
2660
发布2021-03-11 15:16:27
举报

SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。

  • 发送纯文本邮件:
代码语言:javascript
复制
代码语言:javascript
复制
import smtplib
from email.header import Header
from email.mime.text import MIMEText


mail_host = "smtp.163.com"
mail_user = "wangshipei0@163.com"
mail_password = "GWVAZTXQPSOU****" # 邮件服务商给你的SMTP授权密码,不是邮箱登录密码!
#制作邮件
title = "祝福"
content = "Hi,\n新年快乐!\nWith best regards"
sender = mail_user
receivers = ["wangshipei0@163.com","25392xxxx@qq.com"]
message = MIMEText(content, "plain", "utf-8")  # 内容、格式、编码
message["From"] = "{}".format(sender)
message["To"] = ",".join(receivers)
message["Subject"] = title

def sendEmail(message,sender,receivers):
    smtpObj = smtplib.SMTP(mail_host,0)
    smtpObj.ehlo('smtp.163.com') # login 之前这一步必不可少,否则报错“(500, b'Error: bad syntax')”
    smtpObj.login(mail_user,mail_password) #登录验证
    smtpObj.sendmail(sender,receivers, message.as_string())
    print("邮件已发送")

if __name__ == "__main__":
    sendEmail(message,sender,receivers)

下面是163收件箱收到的邮件:

至于如何获取邮件服务提供商的授权码,请自行百度。

  • 发送HTML 格式且带附件的邮件
代码语言:javascript
复制
import smtplib
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart # 发送附件要用到
mail_host = "smtp.163.com"
mail_user = "wangshipei0@163.com"
mail_password = "GWVAZTXQPSOU****" # 邮件服务商给的SMTP授权密码,不是邮箱登录密码!
#制作邮件
sender = mail_user
receivers = ["wangshipei0@163.com","25392xxxx@qq.com"]

title = "祝福"
message = MIMEMultipart()
message["From"] = "{}".format(sender)
message["To"] = ",".join(receivers)
message["Subject"] = title

#添加正文
content = "祝你新年快乐!"
htm = '<h1>'+ "Hi," + '</h><p>' + content + '</p>' #要发送的内容,html格式
msg = MIMEText(htm, "html")  # 内容、格式、编码
message.attach(msg)

#添加第1个附件
file0 = "send_email1.py"
attachment0 = MIMEText(open(file0,"rb").read(),"base64","uft-8")
attachment0.add_header("Content-Disposition","attachment",filename=file0)
message.attach(attachment0)

#添加第2个附件
file1 = "test.txt"
attachment1 = MIMEText(open(file1,"rb").read(),"base64","uft-8")
attachment1.add_header("Content-Disposition","attachment",filename=file1)
message.attach(attachment1)

def sendEmail(message,sender,receivers):
    smtpObj = smtplib.SMTP(mail_host,0)
    smtpObj.ehlo('smtp.163.com') # login 之前这一步必不可少,否则报错“(500, b'Error: bad syntax')”
    smtpObj.login(mail_user,mail_password) #登录验证
    smtpObj.sendmail(sender,receivers, message.as_string())
    print("邮件已发送")

if __name__ == "__main__":
    sendEmail(message,sender,receivers)

收件箱收到的邮件如下(字体有点大,可自行调整html内文本的字体大小):

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档