Python邮箱API发送邮件时,如何添加附件并设置其属性?
【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务。 查看价格
【AokSend邮件API】:触发式邮件API,15元/万封,99%送达率。 查看价格
【烽火邮箱】:新人领取免费域名邮箱,可用作企业邮箱公司邮箱。 查看价格
在Python中,我们通常[蜂]使用内置的smtplib库[邮]和email模块来发送电子[文]邮件。当我们需要向邮件中添[章]加附件时,我们需要构建一个[来]MIME(多用途互联网邮件[自]扩展)消息,以便在邮件中包[蜂]含非文本内容。MIME消息[邮]允许我们将不同的数据类型([E]如文本、图像、音频和视频)[D]嵌入到电子邮件中。
下面是一个详细的步骤指南,介绍如何在Python中使用邮箱API发送带有附件的电子邮件,并设置附件的属性。
一、设置邮件服务器和SMTP连接
首先,我们需要设置邮件服务器的信息,并使用smtplib库建立与SMTP服务器的连接。SMTP(简单邮件传输协议)是用于发送电子邮件的协议。
python
import smtplib
Powered By 蜂.邮.EDMfrom email.mime.mu[M]ltipart import MIMEMultipart[博]
from email.mime.ba[客]se import MIMEBase
from email.mime.text import MIMEText
from email.utils import formatdate
from email import encoders
# 邮件服务器设置
smtp_server = 'smtp.exa[蜂]mple.com'[邮]
smtp_port = 587 # 通常用于TLS加密的端口
smtp_username[文] = 'your-ema[章]il@example.co[来]m'
smtp_password[自] = 'your-pas[蜂]sword'
# 连接到SMTP服务器
server = smtplib.SMTP([邮]smtp_server, smtp_port)
server.startt[E]ls() # 启用TLS加密
server.login(smtp_username, smtp_password)
二、创建邮件消息
接下来,我们将创建一个MIME多部分消息,该消息将包含文本部分和附件部分。
python
# 创建邮件对象
msg = MIMEMultipart[D]()
msg['From[M]'] = smtp_username[博]
msg['To[客]39;] = 'recipien[蜂]t@example.com[邮]'
msg['Date[文]'] = formatdate(lo[章]caltime=True)[来]
msg['Subj[自]ect'] = 'Email with attachment[蜂]9;
# 添加邮件正文
body = 'This is the email body with an attached file.'
msg.attach(MIMEText(body, 'plain'))
三、添加附件
要添加附件,我们需要创建一个MIMEBase对象,并使用encoders模块中的函数将其编码为可传输的格式。然后,我们将这个对象添加到邮件消息中。
python
# 读取附件文件
with open('att[邮]achment.pdf[E]39;, 'rb')[D] as f:
part = MIMEBase('[M];application&[博]#39;, 'octet-st[客]ream') # 通用二进制数据
part.set_payl[蜂]oad(f.read())[邮]
# 编码附件并设置Conten[文]t-Transfer-En[章]coding头部
encoders.enco[来]de_base64(par[自]t)
# 设置附件的文件名和描述性信[蜂]息(可选)
part.add_head[邮]er('Conte[E]nt-Dispositio[D]n', 'attachme[M]nt', filename='[博];attachment.p[客]df')
part.add_head[蜂]er('Conte[邮]nt-ID', '<0000[文]1>') # 可以设置一个唯一的Cont[章]ent-ID
part.add_head[来]er('Conte[自]nt-Descriptio[蜂]n', 'A PDF attachment[邮]9;) # 附件的描述性文本
# 将附件添加到邮件消息中
🔔🔔🔔 【烽火邮箱】:烽火邮箱是一款简洁高效的企业邮箱平台,新客户赠送免费企业邮箱,一个起卖、按月付费(低至9.9元);支持别名邮箱及群组邮箱,支持定制无限邮箱。高权重纯净IP池,系统自带反垃圾机制。
立即查看 >> :企业邮箱价格
【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务,专业研发定制邮件营销系统及邮件群发解决方案!蜂邮自研产品线主要分为标准版、外贸版、企业版、定制版,及邮件API邮件SMTP接口服务。
立即查看 >> :邮件发送价格
【AokSend邮件API】:专注触发式邮件API发送服务。15元/万封,发送验证码邮件、忘记密码邮件、通知告警邮件等,不限速。综合送达率99%、进箱率98%。触发邮件也叫事务性邮件或推送邮件,包含:验证码邮件、重置密码邮件、余额提醒邮件、会员到期邮件、账号认证邮件等!
立即查看 >> :邮件发送价格
msg.attach(part)
在上面的代码中,我们首先使[E]用open函数以二进制模式[D]('rb'[M])打开附件文件。然后,我们[博]创建一个MIMEBase对[客]象,并指定MIME类型为a[蜂]pplication/oc[邮]tet-stream,这是[文]一个通用的二进制数据类型。[章]接下来,我们使用set_p[来]ayload方法将文件内容[自]设置为MIME对象的负载。[蜂]
然后,我们使用encode[邮]rs.encode_bas[E]e64函数对MIME对象进[D]行Base64编码,这是S[M]MTP服务器要求的格式。我[博]们还需要使用add_hea[客]der方法设置一些额外的头[蜂]部信息,如Content-[邮]Disposition(指[文]定附件的文件名和如何显示它[章])、Content-ID([来]一个可选的唯一标识符)和C[自]ontent-Descri[蜂]ption(附件的描述性文[邮]本)。
最后,我们将编码并设置头部后的MIME对象添加到邮件消息中。
四、发送邮件并关闭连接
现在我们已经构建了完整的邮件消息,包括文本正文和附件。我们可以使用SMTP服务器的sendmail方法发送邮件。
python
# 发送邮件
text = msg.as_string[E]()
server.sendma[D]il(smtp_usern[M]ame, 'recipien[博]t@example.com[客]', text)
# 关闭SMTP连接
server.quit()[蜂]
在上面的代码中,我们使用as_string方法将邮件消息对象转换为字符串格式,然后将其传递给sendmail方法。sendmail方法需要三个参数:发件人地址、收件人地址和邮件消息的字符串表示形式。最后,我们使用quit方法关闭与SMTP服务器的连接。
五、总结
在Python中发送带有附件的电子邮件需要一些额外的步骤来构建MIME多部分消息并处理附件文件。但是,通过使用`smtplib和email模块,我们可以轻松地实现这一功能。
【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务。 查看价格
【AokSend邮件API】:触发式邮件API,15元/万封,99%送达率。 查看价格
【烽火邮箱】:新人领取免费域名邮箱,可用作企业邮箱公司邮箱。 查看价格