下面是一份简单的“Python实现SMTP邮件发送功能”的攻略。
SMTP是什么?
SMTP(Simple Mail Transfer Protocol)是一种用于发送电子邮件的协议。该协议定义了某些规则,以确保邮件的可靠传递。Python的smtplib库提供了SMTP客户端实现。
邮件发送环境配置
在进行SMTP邮件发送之前,需要确保已配置SMTP服务器的主机名和端口号,并设置发件人和收件人。这些信息可以通过一些邮件服务提供商获得,例如Gmail或qq邮箱。
smtplib库的安装
在Python中使用smtplib库来实现SMTP邮件发送功能,需要先安装smtplib库。可以使用以下命令进行安装:
pip install secure-smtplib
smtplib库实现邮件发送
下面是SMTP邮件发送的基本步骤:
- 使用smtplib模块中的SMTP函数连接邮件服务器;
- 发送SMTP EHLO命令;
- 使用SSL或TLS协议连接到邮件服务器(如果你的邮件服务器需要加密传输);
- 使用登录函数(如login())登录到邮件服务器;
- 发送邮件;
- 断开与邮件服务器的连接。
下面是一个使用Python smtplib库发送邮件的示例,代码中的变量需要自行替换为合适的值:
import smtplib
from email.mime.text import MIMEText
# 创建SMTP客户端
smtp_ssl_client = smtplib.SMTP_SSL(smtp_server_host, smtp_server_port)
# 登录SMTP服务器
smtp_ssl_client.login(sender_email_addr, sender_email_uikey_or_pwd)
# 创建邮件内容
msg = MIMEText('邮件内容', 'html', 'utf-8')
msg['Subject'] = '邮件标题'
msg['From'] = sender_email_addr
msg['To'] = receiver_email_addr
# 发送邮件
smtp_ssl_client.sendmail(sender_email_addr, [receiver_email_addr], msg.as_string())
# 关闭SMTP连接
smtp_ssl_client.quit()
上面这段代码中,我们使用了smtplib库中的SMTP_SSL()函数创建了一个SMTP客户端,并通过login()函数实现了登录到SMTP服务器的操作。接着,我们使用了email.mime.text库中的MIMEText()函数,创建了一个MIME类型的邮件内容,包含了邮件正文部分。最后,我们通过sendmail()函数实现了邮件发送。
实际应用示例
下面是一个具体的示例,使用Python实现了通过Gmail发送邮件的功能。代码中需要自行填写发送方和接收方的邮箱地址,以及发送邮件时所使用的Gmail账号和密码。
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
sender_email_addr = 'your_gmail_account@gmail.com'
receiver_email_addr = ['recipient_1@gmail.com','recipient_2@gmail.com']
smtp_server_host = 'smtp.gmail.com'
smtp_server_port = 465
password = 'your_gmail_password'
msg = MIMEMultipart()
msg['From'] = Header("Your Name", 'utf-8')
msg['To'] = Header("Recipient", 'utf-8')
subject = 'Test Email'
msg['Subject'] = Header(subject, 'utf-8')
# 邮件正文内容
msg.attach(MIMEText('This is a test email.', 'plain', 'utf-8'))
# 邮件附件
att = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')
att['Content-Type'] = 'application/octet-stream' # 指定文件格式
att['Content-Disposition'] = 'attachment; filename="test.txt"' # 指定文件名称
msg.attach(att)
try:
# 创建安全连接,使用SMTP_SSL连接SMTP服务器
smtp_client = smtplib.SMTP_SSL(smtp_server_host, smtp_server_port)
# 向服务器标识用户身份
smtp_client.login(sender_email_addr, password)
# 发送邮件
smtp_client.sendmail(sender_email_addr, receiver_email_addr, msg.as_string())
print("邮件发送成功")
except smtplib.SMTPException as e:
print("Error: 无法发送邮件 ", e)
# 关闭SMTP连接
smtp_client.quit()
在这个示例中,我们发送了一封包含有附件的邮件。我们使用了email.mime.multipart库中的MIMEMultipart()函数,把邮件内容拆分成了多个部分,分别处理邮件正文和邮件附件。 最后,调用sendmail()函数,将邮件发送给了接收方。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现SMTP邮件发送功能 - Python技术站