下面是Python实现自动发送邮件功能的完整攻略。
简介
Python可以通过SMTP协议实现邮件的发送。SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,是一种用于邮件发送的标准协议。
实现步骤
- 导入相关模块:需要导入smtplib、email模块,其中smtplib用于建立SMTP连接并发送邮件,email模块用于创建邮件对象。
python
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
- 定义邮件内容:为邮件定义发送者、收件人、邮件主题、邮件正文等信息。
python
sender = 'sender@example.com' # 发送者邮箱
password = 'password' # 发送者邮箱密码或授权码
receiver = 'receiver@example.com' # 收件人邮箱
subject = '邮件主题' # 邮件主题
content = '邮件正文' # 邮件正文
- 创建邮件对象:使用email模块中的MIMEText类创建邮件对象。
python
message = MIMEText(content, 'plain', 'utf-8')
message['From'] = formataddr(['发件人', sender])
message['To'] = formataddr(['收件人', receiver])
message['Subject'] = subject
- 登录邮箱服务器:使用smtplib模块的SMTP类创建SMTP对象,调用登录方法登录邮箱服务器。
python
server = smtplib.SMTP('smtp.example.com', 25)
server.login(sender, password)
- 发送邮件:调用sendmail方法发送邮件,sendmail的第一个参数为发件人邮箱地址,第二个参数为收件人邮箱地址,第三个参数为邮件内容。
python
server.sendmail(sender, [receiver], message.as_string())
- 退出邮箱服务器:调用quit方法退出邮箱服务器。
python
server.quit()
示例
示例一
以下示例实现了向单个收件人发送简单的文本邮件。
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
# 定义邮件内容
sender = 'sender@example.com'
password = 'password'
receiver = 'receiver@example.com'
subject = '邮件主题'
content = '邮件正文'
# 创建邮件对象
message = MIMEText(content, 'plain', 'utf-8')
message['From'] = formataddr(['发件人', sender])
message['To'] = formataddr(['收件人', receiver])
message['Subject'] = subject
# 登录邮箱服务器
server = smtplib.SMTP('smtp.example.com', 25)
server.login(sender, password)
# 发送邮件
server.sendmail(sender, [receiver], message.as_string())
# 退出邮箱服务器
server.quit()
示例二
以下示例实现了向多个收件人发送带有附件的HTML格式邮件。
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.utils import formataddr
# 定义邮件内容
sender = 'sender@example.com'
password = 'password'
receivers = ['receiver1@example.com', 'receiver2@example.com']
subject = '邮件主题'
content = '<html><body><h1>邮件正文</h1></body></html>'
filename = 'example.pdf'
# 创建邮件对象
message = MIMEMultipart()
message.attach(MIMEText(content, 'html', 'utf-8'))
message['From'] = formataddr(['发件人', sender])
message['To'] = ','.join([formataddr(['收件人', receiver]) for receiver in receivers])
message['Subject'] = subject
# 添加附件
with open(filename, 'rb') as f:
attachment = MIMEApplication(f.read())
attachment.add_header('Content-Disposition', 'attachment', filename=filename)
message.attach(attachment)
# 登录邮箱服务器
server = smtplib.SMTP('smtp.example.com', 25)
server.login(sender, password)
# 发送邮件
server.sendmail(sender, receivers, message.as_string())
# 退出邮箱服务器
server.quit()
以上就是Python实现自动发送邮件的完整攻略,希望能够帮助到你。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现自动发送邮件功能 - Python技术站