SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。
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收件箱收到的邮件:
至于如何获取邮件服务提供商的授权码,请自行百度。
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内文本的字体大小):
本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!