导入第三方模块
与发送邮件相关的 Python 模块:
smtplib
是关于 SMTP(简单邮件传输协议)的操作模块,在发送邮件的过程中起到服务器之间互相通信的作用。
简单来说,即服务器之间通信的信息,包括信息头、信息主体等等。
举个简单的例子,当你登录邮箱,写好邮件后点击发送,这部分是由 SMTP 接管;而写邮件、添加附件是由 email 模块控制。
安装
pip3 install smtplib
pip3 install email
导入
import smtplib
from email.mime.text import MIMEText
发送纯文本形式邮件
设置邮件内容
、邮件标题
、发送人邮箱
、接收方邮箱
等内容
设置发送格式为plain
,编码utf-8
message = MIMEText(content, 'plain', 'utf-8') # 内容, 格式, 编码
QQ 邮箱需要 SSL 认证,所以 SMTP 已经不能满足要求,而需要SMTP_SSL。
def sendTextEmail(title,info):
content = info+'\n有座位!请尽快购票'
title = title+'12306车票信息' # 邮件主题
message = MIMEText(content, 'plain', 'utf-8') # 内容, 格式, 编码
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message['Subject'] = title
try:
# QQ 邮箱需要 SSL 认证,所以 SMTP 已经不能满足要求,而需要SMTP_SSL
smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 启用SSL发信, 端口一般是465
smtpObj.login(mail_user, mail_pass) # 登录验证
smtpObj.sendmail(sender, receivers, message.as_string()) # 发送
print("mail has been send successfully.")
except smtplib.SMTPException as e:
print(e)
发送HTML形式邮件
当使用Python发送邮件信息时,所有内容都被视为简单文本。 即使在短信中包含HTML标签,它也将显示为简单的文本,HTML标签将不会根据HTML语法进行格式化。 但是,Python提供了将HTML消息作为HTML消息发送的选项。
发送电子邮件时,可以指定一个Mime版本,内容类型和发送HTML电子邮件的字符集。
发送HTML格式的邮件与发送纯文本消息的邮件不同之处就是将MIMEText
中_subtype
设置为 html
# 2.使用Python发送HTML电子邮件
"""
当使用Python发送邮件信息时,所有内容都被视为简单文本。 即使在短信中包含HTML标签,它也将显示为简单的文本,HTML标签将不会根据HTML语法进行格式化。 但是,Python提供了将HTML消息作为HTML消息发送的选项。
发送电子邮件时,可以指定一个Mime版本,内容类型和发送HTML电子邮件的字符集。
发送HTML格式的邮件与发送纯文本消息的邮件不同之处就是将MIMEText中_subtype设置为 html
"""
def sendHtmlEmail(title,info):
html = """
<html>
<head></head>
<body>
<h1>12306车票信息</h1>
<ul>
<li>{0}</li>
</ul>
</body>
</html>
""".format(info)
title = title + '12306车票信息' # 邮件主题
message = MIMEText(html, 'html', 'utf-8') # 内容, 格式, 编码
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message['Subject'] = title
try:
# QQ 邮箱需要 SSL 认证,所以 SMTP 已经不能满足要求,而需要SMTP_SSL
smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 启用SSL发信, 端口一般是465
smtpObj.login(mail_user, mail_pass) # 登录验证
smtpObj.sendmail(sender, receivers, message.as_string()) # 发送
print("mail has been send successfully.")
except smtplib.SMTPException as e:
print(e)
源码
# author: LiuShihao
# data: 2020/12/7 2:57 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc: 发送邮件
import smtplib
from email.mime.text import MIMEText
# 第三方 SMTP 服务
mail_host = "smtp.qq.com" # SMTP服务器
mail_user = "********8@qq.com" # 用户名
mail_pass = "****************" # 密码(这里的密码不是登录邮箱密码,而是授权码)
sender = '********@qq.com' # 发件人邮箱
receivers = ['*********@qq.com','********@qq.com','********@qq.com'] # 接收人邮箱
"""
title标题:从上海前往郑州12306车票信息
info正文:
"""
# 1.使用Python发送纯文本电子邮件
def sendTextEmail(title,info):
content = info+'\n有座位!请尽快购票'
title = title+'12306车票信息' # 邮件主题
message = MIMEText(content, 'plain', 'utf-8') # 内容, 格式, 编码
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message['Subject'] = title
try:
# QQ 邮箱需要 SSL 认证,所以 SMTP 已经不能满足要求,而需要SMTP_SSL
smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 启用SSL发信, 端口一般是465
smtpObj.login(mail_user, mail_pass) # 登录验证
smtpObj.sendmail(sender, receivers, message.as_string()) # 发送
print("mail has been send successfully.")
except smtplib.SMTPException as e:
print(e)
# 2.使用Python发送HTML电子邮件
"""
当使用Python发送邮件信息时,所有内容都被视为简单文本。 即使在短信中包含HTML标签,它也将显示为简单的文本,HTML标签将不会根据HTML语法进行格式化。 但是,Python提供了将HTML消息作为HTML消息发送的选项。
发送电子邮件时,可以指定一个Mime版本,内容类型和发送HTML电子邮件的字符集。
发送HTML格式的邮件与发送纯文本消息的邮件不同之处就是将MIMEText中_subtype设置为 html
"""
def sendHtmlEmail(title,info):
html = """
<html>
<head></head>
<body>
<h1>12306车票信息</h1>
<ul>
<li>{0}</li>
</ul>
</body>
</html>
""".format(info)
title = title + '12306车票信息' # 邮件主题
message = MIMEText(html, 'html', 'utf-8') # 内容, 格式, 编码
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message['Subject'] = title
try:
# QQ 邮箱需要 SSL 认证,所以 SMTP 已经不能满足要求,而需要SMTP_SSL
smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 启用SSL发信, 端口一般是465
smtpObj.login(mail_user, mail_pass) # 登录验证
smtpObj.sendmail(sender, receivers, message.as_string()) # 发送
print("mail has been send successfully.")
except smtplib.SMTPException as e:
print(e)
if __name__ == '__main__':
sendTextEmail('从北京前往的上海','Text')
效果
发送纯文本邮件:
发送HTML邮件: