导读
在编程中,时不时会遇到一些项目是需要反馈或监控一些消息(异常)的,这时候最方便的就是使用邮件来实现了,通过邮件将程序的消息反馈回来。那么Python如何发送邮件呢?
以下是泰泰结合QQ邮箱特性,编写的 Python发送邮件代码,这里只需稍作修改就可以使用了,该代码发送的邮件,是经过SSL加密处理的。
具体的参数,这里就不展开讲了,大家后面可以关注泰泰发布的Python3学习教程。
纯文本邮件
# -*- conding:UTF-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.header import Header
mail_server = "smtp.qq.com"
port = "465"
sender = "********@qq.com" # 发件人
password = "a**********a" # 发件人smtp密码
receiver = ["*******@qq.com"] # 收信人
# 正文内容
mail_msg = 'Python3 学习教程...'
massage = MIMEText(mail_msg, "plain", "utf-8")
massage['From'] = Header("发件人邮箱名称", "utf-8")
massage['To'] = Header("收件人邮箱名称", "utf-8")
massage['Subject'] = Header("Python 学习资料", "utf-8")
try:
mail = smtplib.SMTP_SSL(mail_server, port)
status = mail.login(sender, password)
print(status)
mail.sendmail(sender, receiver, massage.as_string())
print("邮件发送成功!")
mail.quit()
except:
mail.quit()
print("邮件发送失败!")
说明:这里只需修改 sender、password、receiver 程序就可以直接使用了,"From" 和 "To" 中的 邮件名称 可以自定义,不过一般是使用注册邮件时,发送方和接收方的注册名称,"Subject" 是邮件的主题(即标题),mail_msg 是邮件的内容。
邮件内容为 纯文本 时,使用“plain”模式发送!
内容为网页的邮件
# -*- conding:UTF-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.header import Header
mail_server = "smtp.qq.com"
port = "465"
sender = "********@qq.com" # 发件人
password = "************" # 发件人smtp密码
receiver = ["*******@qq.com"] # 收信人
# 正文内容
mail_msg = """
<p>Python3 学习教程...</p>
<p><a href="http://www.taitaiblog.com/43.html">Python 编程技术目录</a></p>
"""
massage = MIMEText(mail_msg, "html", "utf-8")
massage['From'] = Header("发件人邮箱名称", "utf-8")
massage['To'] = Header("收件人邮箱名称", "utf-8")
massage['Subject'] = Header("Python 学习资料", "utf-8")
try:
mail = smtplib.SMTP_SSL(mail_server, port)
status = mail.login(sender, password)
print(status)
mail.sendmail(sender, receiver, massage.as_string())
print("邮件发送成功!")
mail.quit()
except:
mail.quit()
print("邮件发送失败!")
说明:邮件内容为 网页格式 时,使用 “html” 模式发送;mail_msg 中的内容为 html 代码。
邮件中嵌入附件
# -*- conding:UTF-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
mail_server = "smtp.qq.com"
port = "465"
sender = "********@qq.com" # 发件人
password = "a**********a" # 发件人smtp密码
receiver = ["*******@qq.com"] # 收信人
# 创建一个"正文+附件"的实例
massage = MIMEMultipart()
massage['From'] = Header("发件人邮箱名称", "utf-8")
massage['To'] = Header(收件人邮箱名称", "utf-8")
massage['Subject'] = Header("Python 学习资料", "utf-8")
# 正文内容
mail_msg = """
<p>Python3 学习教程...</p>
<p><a href="http://www.taitaiblog.com/43.html">Python 编程技术目录</a></p>
"""
# 邮件正文部分
massage.attach(MIMEText(mail_msg, "html", "utf-8"))
# 邮件附件部分
att = MIMEText(open('./new.txt').read(), 'base64', 'utf-8')
att["Content-Type"] = 'application/octet-stream'
att["Content-Disposition"] = 'attachment; filename="my_file.txt"' # filename 为邮件上显示的名称
massage.attach(att)
try:
mail = smtplib.SMTP_SSL(mail_server, port) # 连接邮箱服务器
status = mail.login(sender, password) # 登录
print(status)
mail.sendmail(sender, receiver, massage.as_string()) # 发送邮件
print("邮件发送成功!")
mail.quit() # 登出
except:
mail.quit()
print("邮件发送失败!")
说明:发送多附件时,只需复制 “邮件附件部分” 的代码即可(新建另一个对象)!
邮件内容嵌入图片
# -*- conding:UTF-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
mail_server = "smtp.qq.com"
port = "465"
sender = "********@qq.com" # 发件人
password = "a**********a" # 发件人smtp密码
receiver = ["*******@qq.com"] # 收信人
# 创建一个"正文+附件"的实例
massage = MIMEMultipart()
massage['From'] = Header("发件人邮箱名称", "utf-8")
massage['To'] = Header("收件人邮箱名称", "utf-8")
massage['Subject'] = Header("Python 学习资料", "utf-8")
# 邮件正文内容
mail_msg = """
<p>Python3 学习教程...</p>
<p><a href="http://www.taitaiblog.com/43.html">Python 编程技术目录</a></p>
<p>图片演示:</p>
<p><img src="cid:image1"></p>
"""
# 邮件正文处理部分
massage.attach(MIMEText(mail_msg, "html", "utf-8"))
# 邮件附件部分
att = MIMEText(open('./new.txt').read(), 'base64', 'utf-8')
att["Content-Type"] = 'application/octet-stream'
att["Content-Disposition"] = 'attachment; filename="my_file.txt"' # fileame 为邮件上显示的名称
massage.attach(att)
# 邮件正文嵌入图片
fp = open('./test.jpg', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
# 定义图片 ID,在 HTML 文本中引用
msgImage.add_header('Content-ID', '<image1>')
massage.attach(msgImage)
try:
mail = smtplib.SMTP_SSL(mail_server, port) # 连接邮件服务器
status = mail.login(sender, password) # 登录
print(status)
mail.sendmail(sender, receiver, massage.as_string()) # 发送邮件
print("邮件发送成功!")
mail.quit() # 登出
except:
mail.quit()
print("邮件发送失败!")
说明:邮件中的图片是通过 ID 号来嵌入的,嵌入多个图片时,只需使用不同的ID来区分即可!
1 条评论
学习了,一次成功~