发送邮件是个很常用的功能.比如自己写个脚本获取并分析股票或期货数据,如果发现有交易机会.此时可以发个邮件来提醒自己.
SMTP即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制邮件的中转方式.Python的smtplib库对SMTP协议进行了封装.
一 开启SMTP服务
使用SMTP发送邮件的话需要本地安装支持SMTP的服务,或者直接使用其他邮件服务商的SMTP服务,这儿我用的QQ邮箱的SMTP服务.
QQ邮箱默认是关闭SMTP服务的,需要自己去开启: 进入https://mail.qq.com/,登录邮箱,然后点击位于顶部的设置, 然后点击账户,然后下拉网页到下图这位置:
点击开启.开启成功后会有一个授权码.这样SMTP服务就开启成功了.
二 代码
创建SendQQMail.py脚本,代码如下
importsmtplibfrom email.mime.text importMIMETextfrom email.header importHeaderfrom datetime importdatetime, timeclassSendQQMail():def __init__(self, sender, authorizationCode, receivers):
self.sender=sender
self.authorizationCode=authorizationCode
self.receivers=receiversdefSendMail(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 ("邮件发送成功")exceptsmtplib.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,成功发送邮件如下图: