当前位置:首页 > 编程知识 > 正文

Python自动邮件完整教程

本文将从多个方面介绍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服务器、登录邮箱、编写邮件正文和主题、发送邮件等。希望能帮助到大家。