Python自动邮件完整教程
- 编程知识
- 2023-09-09
- 3
本文将从多个方面介绍Python自动邮件的使用,以及代码示例。无需复杂的SMTP配置,只需使用Python的内置库smtplib就能轻松实现邮件发送功能。
一、准备工作
1、首先,在Python中我们需要安装smtplib库。
pip install smtplib
2、为了保证邮箱安全,需要在发件人邮箱中开启SMTP服务。
二、连接SMTP服务器
在Python中,通过smtplib.SMTP()函数连接SMTP服务器。
import smtplib
smtpObj = smtplib.SMTP('smtp.gmail.com', 587) # 填写SMTP服务器地址和端口号
smtpObj.starttls() # 开启TLS加密传输
在这里我们以Gmail邮箱为例,服务器地址为smtp.gmail.com,端口号为587。由于Gmail要求使用TLS加密传输,所以需要使用starttls()函数开启加密。
三、登录发件人邮箱
登录发件人邮箱需要使用smtplib.SMTP.login()函数。
import smtplib
smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
smtpObj.starttls()
smtpObj.login('your_email_address@gmail.com', 'your_email_password')
在这里需要填写你的邮件地址和对应的密码。
四、编写邮件正文和主题
通过消息(Message)对象来设置邮件正文和主题。
import smtplib
from email.mime.text import MIMEText
from email.header import Header
smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
smtpObj.starttls()
smtpObj.login('your_email_address@gmail.com', 'your_email_password')
message = MIMEText('这是一封Python自动发送的邮件', 'plain', 'utf-8') # 邮件正文
message['From'] = Header('发件人姓名', 'utf-8') # 发件人姓名
message['To'] = Header('收件人姓名', 'utf-8') # 收件人姓名
message['Subject'] = Header('Python自动邮件测试', 'utf-8') # 邮件主题
五、发送邮件
通过smtplib.SMTP.sendmail()函数将邮件发送出去。
import smtplib
from email.mime.text import MIMEText
from email.header import Header
smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
smtpObj.starttls()
smtpObj.login('your_email_address@gmail.com', 'your_email_password')
message = MIMEText('这是一封Python自动发送的邮件', 'plain', 'utf-8')
message['From'] = Header('发件人姓名', 'utf-8')
message['To'] = Header('收件人姓名', 'utf-8')
message['Subject'] = Header('Python自动邮件测试', 'utf-8')
smtpObj.sendmail('your_email_address@gmail.com', 'recipient_address@domain.com', message.as_string()) # 发送邮件
smtpObj.quit() # 退出连接
六、其他用法
1、发送带附件的邮件。
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.header import Header
from email import encoders
smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
smtpObj.starttls()
smtpObj.login('your_email_address@gmail.com', 'your_email_password')
message = MIMEMultipart()
message['From'] = Header('发件人姓名', 'utf-8')
message['To'] = Header('收件人姓名', 'utf-8')
message['Subject'] = Header('Python自动邮件测试', 'utf-8')
# 邮件正文
message.attach(MIMEText('这是一封Python自动发送的邮件', 'plain', 'utf-8'))
# 附件内容
with open('file_name.extension', 'rb') as f:
mime = MIMEBase('file', 'extension', filename='file_name.extension')
mime.add_header('Content-Disposition', 'attachment', filename=('gbk', '', 'file_name.extension'))
mime.add_header('Content-ID', '<0>')
mime.add_header('X-Attachment-Id', '0')
mime.set_payload(f.read())
encoders.encode_base64(mime)
message.attach(mime)
smtpObj.sendmail('your_email_address@gmail.com', 'recipient_address@domain.com', message.as_string())
smtpObj.quit()
2、同时发送给多个收件人。
import smtplib
from email.mime.text import MIMEText
from email.header import Header
smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
smtpObj.starttls()
smtpObj.login('your_email_address@gmail.com', 'your_email_password')
message = MIMEText('这是一封Python自动发送的邮件', 'plain', 'utf-8')
message['From'] = Header('发件人姓名', 'utf-8')
message['To'] = Header('收件人姓名1, 收件人姓名2', 'utf-8') # 在To中以逗号分隔添加多个收件人
message['Subject'] = Header('Python自动邮件测试', 'utf-8')
smtpObj.sendmail('your_email_address@gmail.com', ['recipient_address1@domain.com', 'recipient_address2@domain.com'], message.as_string()) # 接收方地址可以是列表形式
smtpObj.quit()
七、总结
本文介绍了Python自动邮件的使用方法,包括连接SMTP服务器、登录邮箱、编写邮件正文和主题、发送邮件等。希望能帮助到大家。