下面是“Python自动化发送邮件实例讲解”的完整攻略。
Python自动化发送邮件实例讲解
一、背景介绍
Python 作为一款易学易用的高级编程语言,拥有着完善的邮件发送模块,可以用 Python 代码自动化地发送邮件。在脚本自动化和日常办公中,Python 自动发送邮件的功能有着很广泛的应用。
二、实现原理
Python 发送邮件的原理是通过 SMTP 协议将邮件发送给服务器,通过服务器重新发送给收件人。SMTP 是一种邮件传输协议,Python 内置的 smtplib 库提供了 SMTP 发送邮件的功能。
Python发送带附件的邮件的原理是需要用到MIME(Multipurpose Internet Mail Extensions)标准,将邮件的内容与附件的内容整合在一起,并生成相应的多媒体格式。
三、Python自动化发送邮件实例
实例1:发送简单邮件
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 发件人邮箱
sender = 'your_email@qq.com'
# 接收邮箱
receiver = 'receive_email@qq.com'
# 邮件主题
subject = 'Python SMTP邮件测试'
# 编写 HTML 邮件正文
mail_body = '<p>Python 邮件发送测试...</p>'
# 以 HTML 形式发送邮件
message = MIMEText(mail_body, 'html', 'utf-8')
message['From'] = Header("发件人名称", 'utf-8')
message['To'] = Header("收件人名称", 'utf-8')
message['Subject'] = Header(subject, 'utf-8')
# SMTP服务器地址
smtp_server = 'smtp.qq.com'
smtp_port = 465
# 发件人邮箱账号和密码
username = 'your_email@qq.com'
password = 'smtp授权码(非邮箱登录密码)'
# SSL安全连接
smtp = smtplib.SMTP_SSL(smtp_server, smtp_port)
# 登录验证
smtp.login(username, password)
# 发送邮件
smtp.sendmail(sender, receiver, message.as_string())
# 退出
smtp.quit()
代码详解:
- 通过 smtplib 模块提供的 SMTP() 方法实例化一个 SMTP 对象,smtp_server 和 smtp_port 是其他邮件提供商的 SMTP 服务器地址和端口;
- 通过实例化的 SMTP 对象,登录发件人邮箱账号和密码,使用 SMTP() 中的 login() 方法;
- 创建 MIMEText 对象,指定邮件正文格式和编码方式,邮件头部的 From、To 和 Subject 需要使用 Header 对象来格式化编码;
- 调用 SMTP 对象的 sendmail() 方法发送邮件,这里需要指定发件人、收件人、以及格式化后的邮件内容;
- 最后使用 SMTP 对象的 quit() 方法退出 SMTP 会话。
实例2:发送带附件的邮件
import os
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.application import MIMEApplication
# 发件人邮箱
sender = 'your_email@qq.com'
# 接收邮箱
receiver = 'receive_email@qq.com'
# 邮件主题
subject = 'Python SMTP邮件测试(带附件)'
# 创建一个带附件的邮件实例
message = MIMEMultipart()
message['From'] = Header("发件人名称", 'utf-8')
message['To'] = Header("收件人名称", 'utf-8')
message['Subject'] = Header(subject, 'utf-8')
# 添加邮件正文
mail_body = '<p>Python 邮件发送测试...</p>'
message.attach(MIMEText(mail_body, 'html', 'utf-8'))
# 添加附件
filepath = "test.txt"
if os.path.isfile(filepath):
# 添加附件到邮件中
with open(filepath, 'rb') as f:
# 使用 MIMEApplication() 来添加附件,注意要指定文件名称
attachment = MIMEApplication(f.read())
attachment.add_header('Content-Disposition', 'attachment', filename='test.txt')
message.attach(attachment)
# SMTP服务器地址
smtp_server = 'smtp.qq.com'
smtp_port = 465
# 发件人邮箱账号和密码
username = 'your_email@qq.com'
password = 'smtp授权码(非邮箱登录密码)'
# SSL安全连接
smtp = smtplib.SMTP_SSL(smtp_server, smtp_port)
# 登录验证
smtp.login(username, password)
# 发送邮件
smtp.sendmail(sender, receiver, message.as_string())
# 退出
smtp.quit()
代码详解:
- 在发送带附件的邮件时,需要创建一个 MIMEMultipart 对象;
- 在 MIMEMultipart 中包含邮件的正文和附件;
- 可以使用 MIMEApplication() 来添加附件;
- 在添加附件时,需要指定附件的文件名称。
四、总结
以上便是 Python 自动化发送邮件的实例讲解,相信大家都掌握了具体的实现方法,欢迎大家尝试编写自己的邮件发送应用,提高工作效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python自动化发送邮件实例讲解 - Python技术站