import smtplib
from email.header import Header
from email.mime.text import MIMEText
# 定义第三方smtp服务器相关信息
mail_host = "smtp.qq.com"
mail_user = "1832025651@qq.com"
mail_password = "yrkxgbwrpssfhh"
sender = '1832025651@qq.com' # 发件人邮箱
receivers = ['1273209660@qq.com', '813636586@qq.com'] # 收件人邮箱
messages = MIMEText('python邮件测试', 'plain', 'utf-8') # 邮件正文
messages['From'] = Header('刘宁的python机器人', 'utf-8') # 发件人信息
messages['To'] = Header('测试', 'utf-8') # 收件人信息
messages['Subject'] = Header('Python邮件测试,收到请忽略...', 'utf-8') # 邮件主题
try:
smtpobj = smtplib.SMTP() # 构建一个smtp实例
smtpobj.connect(mail_host, 25) # 连接第三方smtp服务
smtpobj.login(mail_user, mail_password) # 登陆第三方smtp服务器
smtpobj.sendmail(sender, receivers, messages.as_string()) # 发送邮件
print('邮件发送成功')
except smtplib.SMTPException:
print('Error: 无法发送邮件')
# SMTP协议就是简单的文本命令和响应。login()方法用来登录SMTP服务器,sendmail()方法就是发邮件,由于可以一次发给多个人,所以传入一个list,邮件正文是一个str,as_string()把MIMEText对象变成str
# 这是因为邮件主题、如何显示发件人、收件人等信息并不是通过SMTP协议发给MTA,而是包含在发给MTA的文本中的,所以,我们必须把From、To和Subject添加到MIMEText中
# 注意不能简单地传入name <addr@example.com>,因为如果包含中文,需要通过Header对象进行编码。
网友评论