使用QQ邮箱的SMTP服务需要在QQ邮箱里设置开启SMTP服务,并获取SMTP的授权码。如果你需要使用网易的SMTP服务也是同样的操作。具体方法可以百度下。
脚本很简单,发送邮件的流程很短,使用的接口也比较少,直接贴代码吧,不解释了。
# !/usr/bin/python
# -*- coding: utf-8 -*-
import smtplib
from email.mime.text import MIMEText
class Email :
def __init__(self, smtp_user = 'your_email@qq.com', smtp_auth = 'your smtp auth password', smtp_host = 'smtp.qq.com', smtp_port = 465) :
self.__smtp_host = smtp_host # 设置的邮件服务器地址,必须是发送邮箱的服务器,与接收邮箱无关
self.__smtp_port = smtp_port # 邮件服务器的SMTP端口
self.__smtp_user = smtp_user # SMTP用户
self.__smtp_auth = smtp_auth # 开启QQ邮箱的SMTP服务时,由QQ邮箱给的授权码,非QQ邮箱密码。
self.__from = smtp_user # 发送者的QQ邮箱
def send_email(self, to, msg_title, msg_context) :
msg = MIMEText(msg_context, 'plain', 'utf-8')
msg['From'] = self.__from
msg['Subject'] = msg_title
msg['To'] = to
result = True
try:
smtp = smtplib.SMTP_SSL(self.__smtp_host, self.__smtp_port)
smtp.login(self.__smtp_user, self.__smtp_auth)
smtp.sendmail(self.__from, to.split(','), msg.as_string())
smtp.quit()
except smtplib.SMTPException :
result = False
print("fail to send email from {} to {}".format(self.__from, to))
finally:
return result
if __name__ == '__main__':
email = Email()
email.send_email('email_one@163.com, email_two@qq.com', '这是标题', '这是正文')