SMTP发送邮件
SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。
Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。
首先,我们来构造一个最简单的纯文本邮件:
from email.mime.text import MIMEText
msg = MIMEText(\'hello, send by Python...\', \'plain\', \'utf-8\')
注意到构造MIMEText对象时,第一个参数就是邮件正文,第二个参数是MIME的subtype,传入\'plain\',最终的MIME就是\'text/plain\',最后一定要用utf-8编码保证多语言兼容性。
import smtplib
from email.mime.text import MIMEText
def send_mail(username, passwd, recv, title, content, mail_host=\'smtp.163.com\', port=25):
\'\'\'
发送邮件函数,默认使用163smtp
:param username: 邮箱账号 xx@qq.com
:param passwd: 邮箱密码
:param recv: 邮箱接收人地址,多个账号以逗号隔开
:param title: 邮件标题
:param content: 邮件内容
:param mail_host: 邮箱服务器
:param port: 端口号
:return:
\'\'\'
msg = MIMEText(content) # 邮件内容
msg[\'Subject\'] = title # 邮件主题
msg[\'From\'] = username # 发送者账号
msg[\'To\'] = recv # 接收者账号列表
smtp = smtplib.SMTP(mail_host, port=port) # 连接邮箱,传入邮箱地址,和端口号,smtp的端口号是25
smtp.login(username, passwd) # 发送者的邮箱账号,密码
smtp.sendmail(username, recv, msg.as_string())
# 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串
smtp.quit() # 发送完毕后退出smtp
print(\'email send success.\')
email_user = \'xxxxxxxx@qq.com\' # 发送者账号
email_pwd = \'ekrpleslkrbrbdge\' # 发送者密码
maillist = \'xxxxxx@qq.com\' # 接受者邮箱
title = \'测试邮件标题\'
content = \'这里是我的第一个python程序发送的邮件测试内容\'
send_mail(email_user, email_pwd, maillist, title, content)