学习一下如何通过python来发送邮件,这里使用第三方SMTP进行发送。

python 转发邮件 python怎么发送邮件_python

基础知识:

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

Python对SMTP支持有smtplibemail两个模块,email负责构造邮件,smtplib负责发送邮件。

构造MIMEText对象时,第一个参数就是邮件正文,第二个参数是MIME的subtype,传入'plain',最终的MIME就是'text/plain',最后一定要用utf-8编码保证多语言兼容性。

代码:

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

my_sender = 'xxx@qq.com'  # 发件人邮箱账号
my_pass = 'xxx'  # 发件人邮箱密码(授权码)
my_user = 'xxx@qq.com'  # 收件人邮箱账号,我这边发送给自己


def mail():
    ret = True
    try:
        
        msg = MIMEText('这是一封通过python发送的邮件', 'plain', 'utf-8')
        msg['From'] = formataddr(["猪猪侠", my_sender])  # 括号里的对应发件人邮箱昵称、发件人邮箱账号
        msg['To'] = formataddr(["笨笨狗", my_user])  # 括号里的对应收件人邮箱昵称、收件人邮箱账号
        msg['Subject'] = "发送邮件测试"  # 邮件的主题,也可以说是标题

        # QQ 邮箱 SMTP 服务器地址:smtp.qq.com,ssl 端口:465。
        server = smtplib.SMTP_SSL("smtp.qq.com", 465)  # 发件人邮箱中的SMTP服务器,端口是25
        server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码
        server.sendmail(my_sender, [my_user, ], msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
        server.quit()  # 关闭连接
    except Exception as e:  # 如果 try 中的语句没有执行,则会执行下面的 ret=False
        ret = e
    return ret

ret = mail()
print(ret)