欢迎访问宙启技术站
智能推送

Python实现邮件发送的方法

发布时间:2023-05-18 07:29:55

Python中有多种方法可以实现邮件发送,包括使用内置模块和第三方库,以下是常用的两种方法。

方法一:使用标准库smtplib

smtplib是Python的一个标准库,可以用来发送邮件。其核心类SMTP(Simple Mail Transfer Protocol)提供了基本的邮件传输功能,具体步骤如下:

1. 登录SMTP服务器:

import smtplib
smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login('sender_email', 'password')

其中,'smtp.gmail.com'和587是使用Gmail发送邮件的默认SMTP服务器和端口号,可以根据需要修改。starttls()方法用于启用TLS加密传输。sender_email和password分别是发件人的邮箱地址和密码。

2. 编写邮件内容:

from email.mime.text import MIMEText
from email.header import Header
message = MIMEText('邮件正文', 'plain', 'utf-8')
message['From'] = Header('发件人名称', 'utf-8')
message['To'] = Header('收件人名称', 'utf-8')
message['Subject'] = Header('邮件主题', 'utf-8')

其中,MIMEText类用于创建邮件正文对象,以文本方式编码,utf-8为编码方式。Header类用于设置邮件头部信息,即发件人、收件人和主题。

3. 发送邮件:

smtpObj.sendmail(sender_email, receiver_email, message.as_string())

其中,message.as_string()将邮件内容转换为字符串形式,sender_email和receiver_email分别为发件人和收件人的邮箱地址。

4. 关闭SMTP连接:

smtpObj.quit()

完整代码如下:

import smtplib
from email.mime.text import MIMEText
from email.header import Header
smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login('sender_email', 'password')
message = MIMEText('邮件正文', 'plain', 'utf-8')
message['From'] = Header('发件人名称', 'utf-8')
message['To'] = Header('收件人名称', 'utf-8')
message['Subject'] = Header('邮件主题', 'utf-8')
smtpObj.sendmail(sender_email, receiver_email, message.as_string())
smtpObj.quit()

方法二:使用第三方库yagmail

yagmail是一个开源的Python第三方库,可以用来发送邮件。它提供了简单易用的API,具体步骤如下:

1. 安装yagmail库:

pip install yagmail

2. 初始化yagmail客户端:

import yagmail
yag = yagmail.SMTP('sender_email', 'password', 'smtp.gmail.com', 587)

其中,sender_email和password分别是发件人的邮箱地址和密码,smtp.gmail.com和587是使用Gmail发送邮件的默认SMTP服务器和端口号,可以根据需要修改。

3. 编写邮件内容:

contents = ['邮件正文']
yag.send('receiver_email', '邮件主题', contents)

其中,contents是一个包含邮件正文的字符串列表,receiver_email是收件人的邮箱地址。

4. 关闭yagmail客户端:

yag.close()

完整代码如下:

import yagmail
yag = yagmail.SMTP('sender_email', 'password', 'smtp.gmail.com', 587)
contents = ['邮件正文']
yag.send('receiver_email', '邮件主题', contents)
yag.close()

以上两种方法都需要注意安全性问题,例如不应将密码明文存储在代码中,应该使用机密存储库或环境变量来保存密码。并且应该避免发送垃圾邮件,确保发送邮件的目的合法。