学习一下如何通过python来发送邮件,这里使用第三方SMTP进行发送。
基础知识:
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。
Python对SMTP支持有smtplib
和email
两个模块,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)