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

使用Python开发邮件功能的SMTP函数教程

发布时间:2023-06-13 18:29:13

SMTP(Simple Mail Transfer Protocol)是互联网中用于电子邮件传输的标准协议。Python作为一种流行的编程语言,提供了一个内置的SMTP库,可以通过Python编写代码来发送电子邮件。这篇文章将教你如何使用Python的SMTP函数发送邮件。

安装SMTP库

在Python中发送SMTP邮件需要使用smtplib和email两个库。这些库在Python标准库中已经预装,无需安装。

构建邮件信息

在发送邮件之前,必须需要构建邮件的具体信息。这包括发件人地址、收件人地址、主题、正文等。下面的代码将演示如何构建邮件信息:

import smtplib
from email.mime.text import MIMEText
from email.header import Header
 
# 第三方 SMTP 服务
mail_host="smtp.xxx.com"  # smtp服务器
mail_user="yourname"    # 用户名
mail_pass="yourpassword"   # 密码
 
sender = 'from@xxx.com'  # 发件人邮箱
receivers = ['to@xxx.com']  # 收件人邮箱
 
message = MIMEText('邮件内容', 'plain', 'utf-8')  # 邮件正文
message['From'] = Header("发件人名称", 'utf-8')  # 邮件发件人
message['To'] = Header("收件人名称", 'utf-8')  # 邮件收件人
 
subject = '邮件主题'
message['Subject'] = Header(subject, 'utf-8')  # 邮件主题

上面的代码中,邮件正文使用了MIMEText类,该类的 个参数为邮件正文,第二个参数为邮件类型,这里为plain(纯文本)。Header类包含了邮件头信息,包括发件人、收件人、主题等。

使用SSL发送邮件

很多邮箱服务商都提供了加密的SMTP连接,以这种方式可以保证邮件传输过程中的安全性。下面的代码将展示如何使用SSL加密协议来发送邮件:

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import formataddr
import ssl
 
# 第三方 SMTP 服务
mail_host="smtp.xxx.com"  # smtp服务器
mail_user="yourname"    # 用户名
mail_pass="yourpassword"   # 密码
 
sender = 'from@xxx.com'  # 发件人邮箱
receivers = ['to@xxx.com']  # 收件人邮箱
 
message = MIMEText('邮件内容', 'plain', 'utf-8')  # 邮件正文
message['From'] = formataddr(["发件人名称", sender])  # 发件人信息,包含名称和邮箱地址
message['To'] = formataddr(["收件人名称", receivers])  # 收件人信息,包含名称和邮箱地址
 
subject = '邮件主题'
message['Subject'] = Header(subject, 'utf-8')  # 邮件主题
 
context = ssl.create_default_context()  # 创建SSL上下文
with smtplib.SMTP_SSL(mail_host, 465, context=context) as server:
    server.login(mail_user, mail_pass)  # 登录邮箱
    server.sendmail(sender, receivers, message.as_string())  # 发送邮件

上面的代码为了使用SSL协议,我们需要创建一个SSL上下文。SMTP_SSL类用于建立SSL加密的SMTP服务器连接。在with语句块中,我们登录邮箱并发送邮件。

使用TLS发送邮件

TLS(Transport Layer Security)可以提供更高级别的安全性。下面的代码将展示如何使用TLS协议来发送邮件:

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import formataddr
import ssl
 
# 第三方 SMTP 服务
mail_host="smtp.xxx.com"  # smtp服务器
mail_user="yourname"    # 用户名
mail_pass="yourpassword"   # 密码
 
sender = 'from@xxx.com'  # 发件人邮箱
receivers = ['to@xxx.com']  # 收件人邮箱
 
message = MIMEText('邮件内容', 'plain', 'utf-8')  # 邮件正文
message['From'] = formataddr(["发件人名称", sender])  # 发件人信息,包含名称和邮箱地址
message['To'] = formataddr(["收件人名称", receivers])  # 收件人信息,包含名称和邮箱地址
 
subject = '邮件主题'
message['Subject'] = Header(subject, 'utf-8')  # 邮件主题
 
context = ssl.create_default_context()  # 创建SSL上下文
with smtplib.SMTP(mail_host, 587) as server:
    server.starttls(context=context)  # 开始TLS加密
    server.login(mail_user, mail_pass)  # 登录邮箱
    server.sendmail(sender, receivers, message.as_string())  # 发送邮件

上面的代码中,我们使用starttls()方法开启TLS加密。该方法接收可选的上下文参数。其余部分与使用SSL发送邮件的代码类似。

总结

使用Python的smtplib和email库可以轻松地发送电子邮件。在使用SMTP库发送邮件之前,你需要构建邮件的具体信息,包括发件人地址、收件人地址、主题和正文等。如果你需要加密邮件传输,可以使用SSL或TLS协议。无论哪种协议,你都需要提供SMTP服务器、用户名和密码。常用的SMTP服务器有Gmail、Outlook和网易邮箱等。