相关邮件传输协议:
SMTP协议(Simple Mail Transfer Protocol,简单邮件传输协议)
是事实上的在Internet传输email的标准,它定义了邮件客户端软件和 SMTP 邮件服务器之间,以及两台 SMTP 邮件服务器之间的通信规则。
MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展)
是目前互联网电子邮件普通遵循的技术规则。
POP3协议(Post Office Protocol,邮局协议)
它定义了邮件客户端软件和 POP3 邮件服务器的通信规则
IMAP协议(Internet Message Access Protocol,Internet消息访问协议)
它是对 POP3 协议的一 种扩展,也是定义了邮件客户端软件和 IMAP 邮件服务器的通信规则
在QQ邮箱中开启SMTP服务:
在用stmplib发邮件之前需要先到QQ邮箱开启SMTP服务
设置–>账户–>开启前两个SMTP服务
开启服务需要短信验证,然后会给你一段授权码,记得保存下来
忘了也不要紧,花1毛钱发个短信再生成一段新的授权码就行
然后就可以在python中用smtplib发邮件了
用smtplib发邮件代码样例
def send_mail(subject, context, to_list):
"""
发送邮件
接收参数:
subject 邮件主题
context 邮件内容
to_list 接收者邮件列表,每个邮件地址用","分隔
"""
if not subject or not context or not to_list:
return '邮件发送失败,邮件主题、内容与收件人邮件都是必填项'
# 初始始化邮件相关参数
email = MIMEText(context, 'html', 'utf-8')
email['Subject'] = subject
email['From'] = user
email['To'] = to_list
# QQ邮箱改为ssl方式发送了
# s = smtplib.SMTP(smtp)
s = smtplib.SMTP_SSL(smtp) # smtp = 'smtp.qq.com'
try:
s.login(user, passwd) # user=‘发送者邮箱账号’ passwd=‘发送者邮箱授权码’
s.sendmail(user, email_list, email.as_string()) # 发送邮箱账号,接受邮箱账号,邮件内容
s.close()
return 'send_mail successfully'
except Exception as e:
s.close()
stacktrace = format_exc()
return '邮件发送失败,出现异常:' + str(e.args) + stacktrace + '\n'