[Python案例] 发送电子邮件

Posted by Chase Shen on 2022-04-12
Estimated Reading Time 2 Minutes
Words 643 In Total
Viewed Times

使用Python发送邮件要使用SMTP(简单邮件传输协议),SMTP也是一个建立在TCP(传输控制协议)提供的可靠数据传输服务的基础上的应用级协议,它规定了邮件的发送者如何跟发送邮件的服务器进行通信的细节,而Python中的smtplib模块将这些操作简化成了几个简单的函数,并使用 email 库来创建和格式化邮件。

1. 导入所需的库

1
2
3
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

2. 配置 SMTP 服务器的连接信息

1
2
3
4
smtp_server = 'smtp.example.com'
smtp_port = 587 # SMTP 服务器的端口号,一般为 587 或 465
smtp_username = 'your_email@example.com'
smtp_password = 'your_password'

3. 创建邮件内容

1
2
3
4
5
6
7
8
9
subject = 'Test Email'
body = 'This is a test email sent from Python.'

msg = MIMEMultipart()
msg['From'] = smtp_username
msg['To'] = 'recipient@example.com'
msg['Subject'] = subject

msg.attach(MIMEText(body, 'plain'))

MIMEMultipart 类表示的是一个多部分邮件消息,可以包含多个部分,例如文本、HTML、附件等。而 MIMEText 类则表示的是单一部分的邮件消息,只包含文本内容。

msg.attach() 方法用于将 MIME 子部件附加到多部分消息中。在这个特定的例子中,MIMEText(body, 'plain') 创建了一个纯文本类型的 MIME 子部件,表示邮件的主体内容。然后,msg.attach() 方法将这个 MIME 子部件添加到了多部分消息对象 msg 中,以便将其作为邮件的一部分发送出去。如果想一次添加多个内容,需要多次调用 msg.attach() 方法,每次附加一个 MIME 子部件。

4. 连接 SMTP 服务器并发送邮件

1
2
3
4
5
6
7
8
e
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls() # 开启 TLS 加密
server.login(smtp_username, smtp_password)
server.send_message(msg)
print('Email sent successfully!')
except Exception as e:
print(f'Failed to send email: {e}')

使用 with 语句可以确保在代码块执行完毕后自动调用 server.quit() 方法来关闭 smtplib.SMTP 对象的连接。
这样做的好处是确保在使用完 smtplib.SMTP 对象后,及时释放资源并关闭连接,防止资源泄漏和连接泄露,同时也提高了代码的可读性和简洁性。


这个示例演示了如何发送一个简单的文本邮件。你可以根据需要添加附件、HTML 内容等。另外,为了安全起见,建议不要在代码中明文存储邮箱密码,而是使用环境变量或者其他安全的方式来存储和获取密码。


如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !