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,成功发送邮件如下图:

  

  

  

原文地址:https://www.cnblogs.com/fengxing999/p/13860559.html