怎么使用python发邮件

怎么使用python发邮件

作者:William Gu发布时间:2026-03-25阅读时长:0 分钟阅读次数:3

用户关注问题

Q
如何通过Python连接SMTP服务器发送邮件?

我想用Python发送邮件,需要连接SMTP服务器,应该如何操作?

A

使用smtplib连接SMTP服务器

可以使用Python内置的smtplib库,通过smtplib.SMTP或者smtplib.SMTP_SSL类连接SMTP服务器。连接时需要提供SMTP服务器地址和端口,并进行登录认证。示例如下:

import smtplib
smtp = smtplib.SMTP('smtp.example.com', 587)
smtp.starttls() # 启用TLS加密
smtp.login('your_email@example.com', 'your_password')

之后即可使用smtp.sendmail方法发送邮件

smtp.quit()

Q
在Python中如何发送带附件的电子邮件?

我想通过Python发送带有附件的邮件,有什么推荐的方法?

A

使用email库构建包含附件的邮件内容

Python的email库可以用来构建复杂的邮件,包括附件。通过MIMEMultipart创建邮件主体,使用MIMEBase添加附件并进行编码,最后组合发送。示例如下:

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

msg = MIMEMultipart()
msg['From'] = 'sender@example.com'
msg['To'] = 'receiver@example.com'
msg['Subject'] = '带附件的邮件'

body = '这是一封带附件的测试邮件。'
msg.attach(MIMEText(body, 'plain'))

filename = 'file.txt'
attachment = open(filename, 'rb')
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', f'attachment; filename={filename}')
msg.attach(part)

使用smtplib发送msg.as_string()即可

Q
Python发送邮件时怎样避免被识别为垃圾邮件?

用Python程序发邮件,需要注意哪些方面才能减少被收件方标记为垃圾邮件?

A

通过规范邮件内容和正确配置减低垃圾邮件风险

确保邮件头信息完整且规范,邮件内容避免包含垃圾邮件特征词。使用真实的发件邮箱地址和SMTP服务器,配置SPF、DKIM等邮箱认证技术。避免发送大量同样内容的邮件,添加邮件正文内容和适当的主题,提升邮件的可信度,能有效降低被当做垃圾邮件的概率。