Python利用smtplib和email模块自动发送邮件教程

1 下载量 92 浏览量 更新于2024-08-29 收藏 89KB PDF 举报
"本文主要介绍了如何使用Python的smtplib和email模块来自动发送电子邮件,这两个模块是Python标准库的一部分,无需额外安装。通过smtplib可以实现邮件的发送,而email则用于构建邮件的各个组成部分,如发件人、收件人、主题、正文和附件。" 在Python中发送邮件,你需要了解以下关键知识点: 1. smtplib模块: smtplib是Python中的一个标准库,用于处理SMTP(Simple Mail Transfer Protocol)协议,即发送邮件。使用smtplib时,首先需要创建SMTP对象,然后连接到SMTP服务器,登录邮箱,发送邮件,并在完成操作后关闭连接。基本的使用流程如下: ```python import smtplib smtp_server = smtplib.SMTP('smtp.163.com', 25) smtp_server.login('your_username', 'your_client_password') # 使用授权码代替普通密码 smtp_server.sendmail('from_email@example.com', ['to_email1@example.com', 'to_email2@example.com'], message.as_string()) smtp_server.quit() ``` 其中,`smtp_server.connect()`用于连接SMTP服务器,参数是服务器地址和端口号;`smtp_server.login()`用于登录邮箱,通常需要提供邮箱用户名和客户端授权码;`smtp_server.sendmail()`用于发送邮件,参数分别是发件人地址、收件人列表(可为字符串列表或单个字符串)和邮件内容(通常是经过编码的字符串)。 2. email模块: email模块用于构建邮件的结构,包括邮件头部(header)和邮件体(body)。它包含多个子模块,如email.mime用于创建不同类型的邮件内容(如文本、HTML、附件等)。下面是一个简单的例子: ```python import email from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart msg = MIMEMultipart() msg['From'] = 'from_email@example.com' msg['To'] = 'to_email@example.com' msg['Subject'] = '邮件主题' body = '邮件正文内容' msg.attach(MIMEText(body, 'plain')) # 添加附件 with open('attachment.txt', 'rb') as f: part = MIMEBase('application', 'octet-stream') part.set_payload(f.read()) encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename="attachment.txt"') msg.attach(part) ``` 在这个例子中,我们首先创建了一个MIMEMultipart对象,用于承载多个邮件部分。接着设置了邮件的发件人、收件人和主题。然后,我们创建了一个MIMEText对象,用来存储邮件正文,并将其添加到MIMEMultipart对象中。如果需要添加附件,可以创建一个MIMEBase对象,读取文件内容,进行编码,设置附件的Content-Disposition头,最后附加到邮件中。 3. 使用授权码: 当使用如163、126等邮箱时,由于安全原因,通常需要使用客户端授权码而非普通密码登录SMTP服务器。这些授权码可以在邮箱设置中生成,确保了发送邮件的安全性。 4. SMTP服务器地址和端口: 不同的邮箱服务商可能有不同的SMTP服务器地址和默认端口。例如,163邮箱的SMTP服务器地址是'smtp.163.com',默认端口为25。在实际使用中,需要根据所使用的邮箱服务来确定正确的服务器地址和端口。 结合smtplib和email模块,你可以轻松地在Python程序中实现自动发送邮件的功能,无论是简单的文本邮件还是包含附件的复杂邮件。记得在实际操作中,确保遵循邮箱服务商的安全规定,正确使用授权码,并处理好异常情况,以保证邮件发送的稳定性和安全性。