下面我将为您详细讲解Python发送email的三种方式,并提供相应的示例说明。
一、SMTP库发送email
1. 导入SMTP库
使用SMTP库发送email需要先导入该库:
import smtplib
2. 登录SMTP服务器
在发送email之前,我们需要先登录SMTP服务器:
smtp_server = 'smtp.qq.com' # QQ邮箱SMTP服务器
smtp_port = 587 # SMTP协议默认端口
smtp_user = '你的QQ邮箱地址' # 发件人邮箱地址
smtp_password = '你的QQ邮箱授权码' # 发件人邮箱授权码
smtp_connection = smtplib.SMTP(smtp_server, smtp_port)
smtp_connection.starttls()
smtp_connection.login(smtp_user, smtp_password)
在登录SMTP服务器时,我们需要输入发件人的SMTP服务器地址、SMTP协议默认端口号以及发件人的邮箱地址和授权码。登录成功后,我们可以进入下一步操作。
3. 构造email消息
构造email消息包括设置邮件标题、发件人、收件人和正文内容。例如:
from email.mime.text import MIMEText
from email.utils import formataddr
sender_name = '发件人姓名'
sender_email = '你的QQ邮箱地址'
msg = MIMEText('邮件正文内容', 'plain', 'utf-8')
msg['From'] = formataddr([sender_name, sender_email])
msg['To'] = '收件人邮箱地址'
msg['Subject'] = '邮件标题'
4. 发送email
构建email消息之后,我们可以使用几个简单的方法将email消息发送到收件人邮箱:
smtp_connection.sendmail(sender_email, [msg['To']], msg.as_string())
smtp_connection.quit()
在发送email之后,我们需要关闭SMTP连接。
5. 完整示例
下面是一个完整的使用SMTP库发送email的示例:
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
# 1. 登录SMTP服务器
smtp_server = 'smtp.qq.com'
smtp_port = 587
smtp_user = '你的QQ邮箱地址'
smtp_password = '你的QQ邮箱授权码'
smtp_connection = smtplib.SMTP(smtp_server, smtp_port)
smtp_connection.starttls()
smtp_connection.login(smtp_user, smtp_password)
# 2. 构造email消息
sender_name = '发件人姓名'
sender_email = '你的QQ邮箱地址'
msg = MIMEText('邮件正文内容', 'plain', 'utf-8')
msg['From'] = formataddr([sender_name, sender_email])
msg['To'] = '收件人邮箱地址'
msg['Subject'] = '邮件标题'
# 3. 发送email
smtp_connection.sendmail(sender_email, [msg['To']], msg.as_string())
smtp_connection.quit()
二、Yagmail发送email
1. 安装Yagmail
使用Yagmail发送email需要先安装Yagmail包:
!pip install yagmail
2. 构造email消息
构造email消息与使用SMTP库发送email类似:
import yagmail
sender_email = '你的QQ邮箱地址'
recipient_email = '收件人邮箱地址'
email_subject = '邮件标题'
email_content = '邮件正文内容'
yag = yagmail.SMTP(sender_email)
msg = {'to': recipient_email,
'subject': email_subject,
'contents': email_content}
3. 发送email
构建email消息之后,我们可以使用yagmail发送email:
yag.send(msg)
4. 完整示例
下面是一个完整使用Yagmail发送email的示例:
import yagmail
# 1. 构造email消息
sender_email = '你的QQ邮箱地址'
recipient_email = '收件人邮箱地址'
email_subject = '邮件标题'
email_content = '邮件正文内容'
yag = yagmail.SMTP(sender_email)
msg = {'to': recipient_email,
'subject': email_subject,
'contents': email_content}
# 2. 发送email
yag.send(msg)
三、Python标准库中的smtplib发送email
标准库中的smtplib也可以用于发送email。
1. 构造email消息
构造email消息与使用SMTP库和Yagmail库发送email相同:
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
sender_email = '你的QQ邮箱地址'
recipient_email = '收件人邮箱地址'
email_subject = '邮件标题'
email_content = '邮件正文内容'
msg = MIMEText(email_content, 'plain', 'utf-8')
msg['From'] = formataddr(['发件人姓名', sender_email]) # 发件人姓名可以不用填写
msg['To'] = recipient_email
msg['Subject'] = email_subject
2. 发送email
在构建email消息之后,我们可以使用smtplib库发送email:
smtp_server = 'smtp.qq.com'
smtp_port = 587
smtp_user = '你的QQ邮箱地址'
smtp_password = '你的QQ邮箱授权码'
smtp_connection = smtplib.SMTP(smtp_server, smtp_port)
smtp_connection.starttls()
smtp_connection.login(smtp_user, smtp_password)
smtp_connection.sendmail(sender_email, [recipient_email], msg.as_string())
smtp_connection.quit()
3. 完整示例
下面是一个完整使用smtplib发送email的示例:
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
# 1. 构造email消息
sender_email = '你的QQ邮箱地址'
recipient_email = '收件人邮箱地址'
email_subject = '邮件标题'
email_content = '邮件正文内容'
msg = MIMEText(email_content, 'plain', 'utf-8')
msg['From'] = formataddr(['发件人姓名', sender_email])
msg['To'] = recipient_email
msg['Subject'] = email_subject
# 2. 发送email
smtp_server = 'smtp.qq.com'
smtp_port = 587
smtp_user = '你的QQ邮箱地址'
smtp_password = '你的QQ邮箱授权码'
smtp_connection = smtplib.SMTP(smtp_server, smtp_port)
smtp_connection.starttls()
smtp_connection.login(smtp_user, smtp_password)
smtp_connection.sendmail(sender_email, [recipient_email], msg.as_string())
smtp_connection.quit()
以上就是三种Python发送email的方式,希望能对你有所帮助。