下面是“详解Python发送email的三种方式”的完整实例教程。
前言
无论是个人还是企业,发送邮件是经常需要的一个功能,Python提供了多种发送邮件的方式,本文将详细介绍三种方式。
方式一:使用smtplib库发送邮件
代码示例
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 邮件配置信息
smtp_server = 'smtp.qq.com'
smtp_port = 465
smtp_ssl = True
smtp_user = '123456@qq.com'
smtp_password = 'password' # 邮箱授权码
# 发送邮件信息
sender = '123456@qq.com'
receivers = ['78910@qq.com']
# 邮件正文
mail_content = 'Python 邮件发送测试...'
message = MIMEText(mail_content, 'plain', 'utf-8')
# 邮件信息配置
message['From'] = Header("发件人", 'utf-8')
message['To'] = Header("收件人", 'utf-8')
message['Subject'] = Header("Python 邮件测试", 'utf-8')
# 发送邮件
try:
smtpObj = smtplib.SMTP_SSL(smtp_server, smtp_port)
smtpObj.login(smtp_user, smtp_password)
smtpObj.sendmail(sender, receivers, message.as_string())
print("邮件发送成功")
except smtplib.SMTPException as e:
print("Error: 邮件发送失败: ", e)
示例说明
smtplib
是Python自带发送邮件的类库,在发送邮件前需先初始化邮件配置信息,包括SMTP服务器地址、端口号、SSL加密等;MIMEText
是邮件正文内容的类,可以指定邮件格式和编码格式;Header
是把字符串转成可以在邮件中用的格式;- 要发送邮件,需要在邮件对象上设置发送者、接受者、标题等信息;
SMTP
类实现了SMTP协议发送邮件的方法,调用sendmail()
方法发送邮件,在发送邮件前需要调用login()
方法进行邮箱授权访问验证。
方式二:使用email库发送邮件
代码示例
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
# 邮件配置信息
smtp_server = 'smtp.qq.com'
smtp_port = 465
smtp_ssl = True
smtp_user = '123456@qq.com'
smtp_password = 'password' # 邮箱授权码
# 发送邮件信息
sender = '123456@qq.com'
receivers = ['78910@qq.com']
# 邮件正文
mail_content = 'Python 邮件发送测试...'
message = MIMEMultipart()
text = MIMEText(mail_content)
message.attach(text)
# 添加一张图片
with open('test.jpg', 'rb') as f:
img_data = f.read()
img = MIMEImage(img_data)
img.add_header('Content-ID', '<test.jpg>')
message.attach(img)
# 邮件信息配置
message['From'] = '发件人'
message['To'] = '收件人'
message['Subject'] = 'Python 邮件测试'
# 发送邮件
try:
smtpObj = smtplib.SMTP_SSL(smtp_server, smtp_port)
smtpObj.login(smtp_user, smtp_password)
smtpObj.sendmail(sender, receivers, message.as_string())
print("邮件发送成功")
except smtplib.SMTPException as e:
print("Error: 邮件发送失败: ", e)
示例说明
MIMEMultipart
是邮件对象,可以设置邮件正文、图片、附件等;MIMEText
是文本类型邮件内容,MIMEImage
是图片类型邮件内容;- 可以通过
add_header()
方法添加图片的Content-ID,在HTML中可以通过<img src="cid:content-id">
标签来显示图片; - 通过
smtplib.SMTP_SSL()
方法创建SMTP连接,调用login()
方法进行登录授权; sendmail()
方法实现邮件发送。
方式三:使用yagmail库发送邮件
代码示例
import yagmail
# 配置信息
smtp_server = 'smtp.qq.com'
smtp_port = 465
smtp_user = '123456@qq.com'
smtp_password = 'password' # 邮箱授权码
# 发送邮件信息
receiver = '78910@qq.com'
subject = 'Python 邮件测试'
contents = [
'Python 邮件发送测试...',
'附件:test.jpg'
]
attachments = [
'test.jpg'
]
# 发送邮件
try:
yag = yagmail.SMTP(user=smtp_user, password=smtp_password, host=smtp_server, port=smtp_port)
yag.send(to=receiver, subject=subject, contents=contents, attachments=attachments)
print("邮件发送成功")
except Exception as e:
print("Error: 邮件发送失败: ", e)
示例说明
yagmail
是一个简单易用的发送邮件库,只需要设置SMTP服务器、登录用户名和密码即可;SMTP()
方法用于创建SMTP连接和登录授权;send()
方法发送邮件,可以设置收件人、标题、正文、附件等。
以上三种Python发送邮件的方式都是比较常用且简单的方式。根据实际业务需求,选择适合的方式发送邮件即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python发送email的三种方式 - Python技术站