Python3使用SMTP发送电子邮件指南

2 下载量 175 浏览量 更新于2024-08-31 1 收藏 315KB PDF 举报
"Python3利用SMTP协议发送E-mail电子邮件的方法" 在Python3中,利用SMTP协议发送电子邮件是一项常见的任务,这通常涉及到使用内置的`smtplib`库。SMTP(Simple Mail Transfer Protocol)是一种用于在互联网上传输邮件的标准协议。本文将详细介绍如何使用Python3和SMTP协议来发送电子邮件。 首先,了解电子邮件的工作原理对于编写发送邮件的程序至关重要。电子邮件系统由多个组件构成,包括Mail User Agent (MUA)、Mail Transfer Agent (MTA)和Mail Delivery Agent (MDA)。MUA是用户用来撰写和阅读邮件的应用,如Outlook或Foxmail。当用户点击“发送”时,MUA将邮件发送到MTA,这是邮件服务商提供的服务器,负责邮件的传输。邮件通过MTA网络从一个服务商传递到另一个,直到到达目标邮箱所在的MDA。收件人使用MUA从MDA检索邮件。 在Python中,发送邮件的基本步骤如下: 1. 导入所需的库:首先,你需要导入`smtplib`库来处理SMTP通信,以及`email.mime`库来创建邮件消息对象。 ```python import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart ``` 2. 创建邮件消息:使用`MIMEText`或`MIMEMultipart`创建邮件内容。`MIMEText`适用于纯文本邮件,而`MIMEMultipart`用于包含附件或HTML内容的复杂邮件。 ```python msg = MIMEMultipart() msg['From'] = 'me@163.com' msg['To'] = 'friend@sina.com' msg['Subject'] = 'Python3 SMTP 邮件示例' msg.attach(MIMEText('你好,这是一封使用Python3发送的邮件。', 'plain')) ``` 3. 设置SMTP服务器和端口:根据你的邮件服务商,你需要知道SMTP服务器的地址和端口号。例如,对于163邮箱,SMTP服务器可能是'smtp.163.com',端口可能是465(SSL)或587(TLS)。 4. 登录SMTP服务器:使用`smtplib.SMTP_SSL`或`smtplib.SMTP`连接到SMTP服务器,并使用你的用户名和密码登录。 ```python smtp_server = 'smtp.163.com' smtp_port = 465 smtp_obj = smtplib.SMTP_SSL(smtp_server, smtp_port) smtp_obj.login('your_username', 'your_password') ``` 5. 发送邮件:最后,使用`smtp_obj.sendmail()`方法将邮件发送出去。 ```python smtp_obj.sendmail(msg['From'], msg['To'].split(','), msg.as_string()) smtp_obj.quit() ``` 以上就是一个基本的Python3使用SMTP发送邮件的过程。请注意,为了安全起见,实际应用中应使用环境变量或配置文件来存储敏感信息,如用户名和密码,而不是直接硬编码在代码中。 此外,如果你需要发送带附件的邮件,可以创建一个`MIMEApplication`对象并将其添加到`MIMEMultipart`实例中。如果邮件包含HTML内容,可以创建`MIMEText`对象时指定'mixed'或'alternative'作为第二个参数,以便同时发送纯文本和HTML版本。 通过理解电子邮件的工作流程和Python中的SMTP接口,你可以构建出功能丰富的邮件发送脚本,满足日常或项目需求。