发送电子邮件已经是我们日常沟通的重要部分,无论是工作上还是生活中,都有很多时候需要发送邮件。本文将详细介绍使用Python SMTP发送邮件的完整指南,包括SMTP协议、邮件格式、邮件服务器选取、代码示例等内容。
一、SMTP协议
SMTP,即简单邮件传输协议,是用于发送电子邮件的标准协议。它定义了邮件的传输方式,附件格式等规范,以保证邮件能够被正常接收。当我们通过Python发送邮件时,要使用SMTP协议来构建邮件并发送。
在Python中,我们可以使用smtplib库来实现SMTP协议。对于SMTP服务器的选择,需要对自己所在的网络环境作出相应的选择。一般而言,百度、腾讯、阿里等互联网公司都提供SMTP服务器,同时也可以选择其他稳定的SMTP服务商。
二、邮件格式
在使用Python发送邮件时,需要注意邮件格式,保证邮件能够正确显示。常见的邮件格式有纯文本、HTML、纯文本+HTML混合。在发送邮件时,可以通过设置MIME(多用途互联网邮件扩展)格式来指定邮件格式。
下面是一个HTML格式的邮件示例:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.utils import COMMASPACE
# 发送邮件的账号和密码
sender = 'youremail@163.com'
password = 'yourpassword'
# 收件人
to_addr = ['email1@163.com', 'email2@qq.com']
# 构造带附件的邮件
msg = MIMEMultipart()
msg['From'] = Header("发送人", 'utf-8')
msg['To'] = COMMASPACE.join(to_addr)
msg['Subject'] = Header('Python发送HTML格式的邮件', 'utf-8')
# 邮件正文
body = MIMEText('Hello, HTML邮件测试!
' +
'' +
'', 'html', 'utf-8')
msg.attach(body)
# 添加附件
file_path = '/path/to/attachment'
with open(file_path, 'rb') as f:
attachment = MIMEApplication(f.read(), Name='attachment.pdf')
attachment['Content-Disposition'] = 'attachment; filename="attachment.pdf"'
msg.attach(attachment)
# 发送邮件
try:
server = smtplib.SMTP('smtp.163.com', 25)
server.login(sender, password)
server.sendmail(sender, to_addr, msg.as_string())
server.quit()
print('邮件发送成功')
except Exception as e:
print('邮件发送失败,错误信息:', e)
邮件正文使用HTML格式,可以轻松地显示出格式丰富的内容和链接。同时,也可以通过构造MIME消息实现带附件的邮件。
三、邮件服务器选取
在选择邮件服务器时,需要考虑可靠性、速度和稳定性等问题。一般来说,互联网公司提供的SMTP服务器比较可靠,并且能够支持较大的邮件发送量。同时,也可以选择其他稳定的SMTP服务商。
对于国内用户,建议选择提供SSL加密的SMTP服务器,以保证邮件传输过程的安全性。 更为常用和稳定的SMTP服务器如下:
- 163邮箱:smtp.163.com
- QQ邮箱:smtp.qq.com
- 阿里云邮件推送:smtpdm.aliyun.com
四、代码示例
下面是一个使用smtplib库发送纯文本邮件的示例:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 发送邮件的账号和密码
sender = 'youremail@163.com'
password = 'yourpassword'
# 收件人
to_addr = 'email@163.com'
# 构造纯文本邮件
message = MIMEText('Python发送纯文本邮件', 'plain', 'utf-8')
message['From'] = Header("发送人", 'utf-8')
message['To'] = Header("接收人", 'utf-8')
message['Subject'] = Header('Python发送邮件测试', 'utf-8')
# 发送邮件
try:
server = smtplib.SMTP('smtp.163.com', 25)
server.login(sender, password)
server.sendmail(sender, to_addr, message.as_string())
server.quit()
print("邮件发送成功")
except Exception as e:
print('邮件发送失败,错误信息:', e)
这是一个发送纯文本邮件的示例,邮件正文使用纯文本格式,简单明了。
本文主要介绍了使用Python SMTP发送邮件的相关知识,包括SMTP协议、邮件格式、邮件服务器选取及代码示例。希望可以对需要发送邮件的读者提供一些帮助。
原创文章,作者:ZKJUK,如若转载,请注明出处:https://www.506064.com/n/317438.html