Python SMTP发送邮件
发送邮件是个很常用的功能.比如自己写个脚本获取并分析股票或期货数据,如果发现有交易机会.此时可以发个邮件来提醒自己.
SMTP即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制邮件的中转方式.Python的smtplib库对SMTP协议进行了封装.
一 开启SMTP服务
使用SMTP发送邮件的话需要本地安装支持SMTP的服务,或者直接使用其他邮件服务商的SMTP服务,这儿我用的QQ邮箱的SMTP服务.
QQ邮箱默认是关闭SMTP服务的,需要自己去开启: 进入https://mail.qq.com/,登录邮箱,然后点击位于顶部的设置, 然后点击账户,然后下拉网页到下图这位置:
点击开启.开启成功后会有一个授权码.这样SMTP服务就开启成功了.
二 代码
创建SendQQMail.py脚本,代码如下
import smtplib from email.mime.text import MIMEText from email.header import Header from datetime import datetime, time class SendQQMail(): def __init__(self, sender, authorizationCode, receivers): self.sender = sender self.authorizationCode = authorizationCode self.receivers = receivers def SendMail(self): today = str(datetime.now().date()) subject = today + ' 期货行情提示'#邮件主题 message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')#第一个为邮件的内容,plain 设置文本格式 message['Subject'] = Header(subject, 'utf-8')#设置邮件主题 message['From'] = Header("发件人名字", 'utf-8') #设置发件人名字 message['To'] = Header("交易员", 'utf-8') #设置收件人名字 try: smtp_server = 'smtp.qq.com'#发信服务器 # 开启发信服务,这里使用的是加密传输 server = smtplib.SMTP_SSL(smtp_server) server.connect(smtp_server, 465) # 登录发件人邮箱 server.login(self.sender, self.authorizationCode) server.sendmail(self.sender, self.receivers, message.as_string())#发送邮件 server.quit()#关闭服务器 print ("邮件发送成功") except smtplib.SMTPException: print ("Error: 无法发送邮件") if __name__ == '__main__': sender = 'xxx@qq.com'#输入发件人邮箱 receivers = ['xxx@qq.com'] #接收者邮件列表,可设置为你的QQ邮箱或者其他邮箱 sendQQMail = SendQQMail(sender, 'aaa', receivers)#'aaa'处用你邮箱SMTP服务的授权编码 sendQQMail.SendMail()
三 运行
打开cmd.exe,cd来到SendQQMail.py的目录,输入python SendQQMail.py,成功发送邮件如下图: