SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是一种用于从发送方邮件服务器传输电子邮件到接收方邮件服务器的协议。Python 的 smtplib
库提供了发送电子邮件的功能。本章将详细介绍如何使用 Python3 的 smtplib
和 email
库来发送电子邮件。
使用 smtplib 发送邮件
导入必要的库
首先,你需要导入 smtplib
库以及 email
库中的相关模块:
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart
创建 SMTP 对象
接下来,创建一个 SMTP 对象,并连接到你的邮件服务器。这里以 Gmail 邮件服务器为例:
smtp_server = 'smtp.gmail.com' smtp_port = 587 smtp_user = 'your_email@gmail.com' smtp_password = 'your_password' server = smtplib.SMTP(smtp_server, smtp_port) server.starttls() # 启动TLS加密 server.login(smtp_user, smtp_password)
构建邮件内容
使用 MIMEMultipart
类构建邮件对象,然后添加邮件头和正文:
msg = MIMEMultipart() msg['From'] = smtp_user msg['To'] = 'recipient_email@example.com' msg['Subject'] = '主题:测试邮件' body = '这是邮件正文。' msg.attach(MIMEText(body, 'plain'))
发送邮件
将邮件内容通过 SMTP 对象发送出去:
text = msg.as_string() server.sendmail(smtp_user, 'recipient_email@example.com', text) server.quit()
处理异常情况
发送邮件时可能会遇到各种问题,如网络问题、登录失败等。你可以通过捕获异常来处理这些问题:
try: server.starttls() server.login(smtp_user, smtp_password) server.sendmail(smtp_user, 'recipient_email@example.com', text) except Exception as e: print(f"发送邮件时发生错误:{e}") finally: server.quit()
使用第三方库简化操作
除了标准库之外,还可以使用第三方库来简化发送邮件的过程。例如,yagmail
是一个非常方便的库,可以简化 SMTP 操作:
安装 yagmail
pip install yagmail
发送邮件
使用 yagmail
发送邮件:
import yagmail yag = yagmail.SMTP(smtp_user, smtp_password) yag.send( to='recipient_email@example.com', subject='主题:测试邮件', contents='这是邮件正文。' )
高级功能
添加附件
使用 email
库中的 MIMEBase
类来添加附件:
-- -------------------- ---- ------- ---- --------------- ------ -------- ---- ----- ------ -------- -------- - ------------- ---------- - -------------- ----- ---- - ----------------------- --------------- ------------------------------------- ---------------------------- -------------------------------------- ------------ --------- --- - --------- ----------------
HTML 邮件
如果你希望发送带有 HTML 内容的邮件,可以使用 MIMEText
的 html
参数:
-- -------------------- ---- ------- --------- - --- ------ ------ --------------------- ------- ------- --- ------------------------------ --------
多部分邮件
多部分邮件可以同时包含文本和附件,甚至可以包含多个附件:
-- -------------------- ---- ------- --- - ---------------------------- ------------------------------ --------- ------------------------------ -------- - ---- ---- ------------------- ----- -- ----------- ---- - ----------------------- --------------- ----------------------------------- ---------------------------- -------------------------------------- ------------ --------- --- - -------------- ----------------
总结
通过以上步骤,你可以使用 Python3 轻松地发送电子邮件。无论是简单的文本邮件还是复杂的多部分邮件,都可以通过 smtplib
和 email
库来实现。此外,使用 yagmail
等第三方库可以使发送邮件变得更加简单高效。