下面是关于Python smtplib发送带附件邮件小程序的完整攻略。
1. 简介
在Python中,可以使用smtplib
模块来发送邮件,而且可以发送带有附件的邮件。本篇文章将介绍使用Python的smtplib
模块发送带附件邮件的完整攻略。
2. 准备工作
在开始编写代码之前,需要进行一些准备工作:
- 确认你的SMTP服务器支持SSL或TLS加密协议。
- 确认你的SMTP服务器地址、端口号、登录用户名和密码以及发件人和收件人的邮件地址。
- 准备需要发送的附件文件。在本文的示例中,我们准备了一个名为
document.txt
的文件,该文件将作为附件发送到收件人邮箱。
3. 代码实现
首先,导入smtplib
和email
模块:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.header import Header
其中,MIMEText
用于处理纯文本邮件,MIMEMultipart
用于处理带有附件的邮件,MIMEApplication
用于处理二进制附件,Header
用于处理邮件头部信息。
然后,定义SMTP服务器地址、端口号、登录用户名和密码以及发件人和收件人的邮件地址:
smtp_server = 'smtp.example.com'
smtp_port = 465
smtp_user = 'user@example.com'
smtp_password = 'your_password'
sender = 'user@example.com'
receiver = 'receiver@example.com'
创建MIMEMultipart对象并设置邮件头信息:
msg = MIMEMultipart()
msg['From'] = Header('发件人名称', 'utf-8').encode()
msg['To'] = Header('收件人名称', 'utf-8').encode()
msg['Subject'] = Header('邮件主题', 'utf-8').encode()
在邮件正文中加入内容:
text = '这是一封测试邮件,请勿回复。'
part1 = MIMEText(text, 'plain', 'utf-8')
msg.attach(part1)
添加附件:
with open('document.txt', 'rb') as f:
content = f.read()
part2 = MIMEApplication(content)
part2.add_header('Content-Disposition', 'attachment', filename='document.txt')
msg.attach(part2)
使用SSL/TLS加密协议连接SMTP服务器,并登录SMTP服务器:
smtp = smtplib.SMTP_SSL(smtp_server, smtp_port)
smtp.login(smtp_user, smtp_password)
发送邮件:
smtp.sendmail(sender, receiver, msg.as_string())
最后,关闭SMTP连接:
smtp.quit()
4. 示例说明
下面是两个示例说明:
示例1:发送纯文本邮件
如果需要发送纯文本邮件,可以将代码中的MIMEMultipart
改为MIMEText
,并调用set_payload
方法设置邮件正文内容:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
smtp_server = 'smtp.example.com'
smtp_port = 465
smtp_user = 'user@example.com'
smtp_password = 'your_password'
sender = 'user@example.com'
receiver = 'receiver@example.com'
msg = MIMEText('这是一封测试邮件,请勿回复。', 'plain', 'utf-8')
msg['From'] = Header('发件人名称', 'utf-8').encode()
msg['To'] = Header('收件人名称', 'utf-8').encode()
msg['Subject'] = Header('邮件主题', 'utf-8').encode()
smtp = smtplib.SMTP_SSL(smtp_server, smtp_port)
smtp.login(smtp_user, smtp_password)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()
示例2:发送HTML格式邮件
如果需要发送HTML格式的邮件,只需要将代码中的MIMEText
的第二个参数改为html
,并将邮件正文内容设置为HTML代码即可:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
smtp_server = 'smtp.example.com'
smtp_port = 465
smtp_user = 'user@example.com'
smtp_password = 'your_password'
sender = 'user@example.com'
receiver = 'receiver@example.com'
html = '<html><body><h1>这是一封测试邮件,请勿回复。</h1></body></html>'
msg = MIMEText(html, 'html', 'utf-8')
msg['From'] = Header('发件人名称', 'utf-8').encode()
msg['To'] = Header('收件人名称', 'utf-8').encode()
msg['Subject'] = Header('邮件主题', 'utf-8').encode()
smtp = smtplib.SMTP_SSL(smtp_server, smtp_port)
smtp.login(smtp_user, smtp_password)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()
5. 总结
本篇文章介绍了如何使用Python的smtplib
模块发送带附件邮件的完整攻略,同时提供了两个示例说明。在编写代码的过程中,需要注意SMTP服务器的安全性设置,避免信息泄露和安全风险。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python smtplib发送带附件邮件小程序 - Python技术站