首页 > 编程知识 正文

Python实现邮件发送功能

时间:2024-04-27 11:09:11 阅读:335110 作者:PLNO

在今天互联网高度发达的情况下,邮件已成为中小企业沟通的主要方式之一,邮件的可靠性和实时性也是企业合作的必要条件之一。在这篇文章中,我们将会介绍Python如何实现邮件发送功能,让你快速掌握邮件发送的技能。

一、SMTP协议

在介绍如何使用Python发送邮件之前,我们需要先了解SMTP协议。SMTP(Simple Mail Transfer Protocol)是一种用于发送邮件的标准协议,它定义了邮件客户端程序和邮件服务器之间的通信规则。SMTP协议使用TCP协议传输邮件,邮件传输过程中使用25号端口(部分邮件服务商使用465、587端口)。

SMTP协议有以下几个阶段:

  • 握手
  • 建立传输通道
  • 发送命令
  • 发送邮件内容
  • 关闭传输通道

在Python中,我们可以使用smtplib库实现SMTP协议,进行邮件发送。

二、Python邮件发送库

Python邮件发送库和SMTP协议紧密相连,可以使用Python的smtplib库实现邮件发送。Python邮件发送库提供了邮件内容的构建,邮件的发送以及邮件附件的添加等功能。下面是Python邮件发送的代码示例:

import smtplib
from email.mime.text import MIMEText
from email.header import Header

sender = 'xxx@xxx.com' # 发送者邮箱地址
password = 'xxxxxx'    # 发送者邮箱密码
smtp_server = 'smtp.xxx.com' # 发送邮箱服务器地址

receiver = 'xxx@xxx.com' # 接收者邮箱地址
message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8') # 邮件内容
message['From'] = Header('Python邮件测试', 'utf-8') # 邮件发送者信息
message['To'] = Header('测试', 'utf-8') # 邮件接收者信息
subject = 'Python SMTP 邮件测试' # 邮件主题
message['Subject'] = Header(subject, 'utf-8')

try:
    smtpObj = smtplib.SMTP(smtp_server, 25) # 连接邮件服务器
    smtpObj.login(sender, password) # 登录邮件服务器
    smtpObj.sendmail(sender, receiver, message.as_string()) # 发送邮件
    print('发送成功')
except smtplib.SMTPException as e:
    print('发送失败', e)
finally:
    smtpObj.quit() # 断开连接

以上代码中,smtplib.SMTP()方法用于连接SMTP服务器,25是SMTP协议默认端口。在连接SMTP服务器之后,我们需要使用smtplib.SMTP().login()方法登录SMTP服务器,登录成功后使用smtplib.SMTP().sendmail()方法发送邮件。

三、Python发送带附件的邮件

有些时候,我们需要发送带附件的邮件,比如发送图片、文档等。Python中的email.mime.multipart.MIMEMultipart()类可以帮助我们构建带有附件的邮件。下面是Python发送带附件的邮件的代码示例:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.header import Header

sender = 'xxx@xxx.com' # 发送者邮箱地址
password = 'xxxxxx'    # 发送者邮箱密码
smtp_server = 'smtp.xxx.com' # 发送邮箱服务器地址

receiver = 'xxx@xxx.com' # 接收者邮箱地址
message = MIMEMultipart() # 创建MIMEMultipart对象
message['From'] = Header('Python邮件测试', 'utf-8') # 发送者信息
message['To'] = Header('测试', 'utf-8') # 接收者信息
subject = 'Python SMTP 邮件测试' # 邮件主题
message['Subject'] = Header(subject, 'utf-8')

# 构造邮件正文
message.attach(MIMEText('Python 邮件发送测试...', 'plain', 'utf-8'))

# 构造附件
with open('example.pdf', 'rb') as f:
    pdf = MIMEApplication(f.read())
    pdf.add_header('Content-Disposition', 'attachment', filename='example.pdf')
    message.attach(pdf)

try:
    smtpObj = smtplib.SMTP(smtp_server, 25) # 连接邮件服务器
    smtpObj.login(sender, password) # 登录邮件服务器
    smtpObj.sendmail(sender, receiver, message.as_string()) # 发送邮件
    print('发送成功')
except smtplib.SMTPException as e:
    print('发送失败', e)
finally:
    smtpObj.quit() # 断开连接

以上代码中,我们使用email.mime.multipart.MIMEMultipart()类创建一个带有附件的邮件,使用email.mime.application.MIMEApplication()类构造附件。构造邮件正文后,我们可以使用MIMEMultipart().attach()方法把附件添加到邮件中。

四、Python发送HTML邮件

Python还可以发送HTML格式的邮件,使用email.mime.text.MIMEText()类可以构造HTML内容的邮件。以下是Python发送HTML邮件的示例代码:

import smtplib
from email.mime.text import MIMEText
from email.header import Header

sender = 'xxx@xxx.com' # 发送者邮箱地址
password = 'xxxxxx'    # 发送者邮箱密码
smtp_server = 'smtp.xxx.com' # 发送邮箱服务器地址

receiver = 'xxx@xxx.com' # 接收者邮箱地址
message = MIMEText('

Python 邮件发送测试...

这是一封HTML格式的邮件!

', 'html', 'utf-8') message['From'] = Header('Python邮件测试', 'utf-8') # 发送者信息 message['To'] = Header('测试', 'utf-8') # 接收者信息 subject = 'Python SMTP 邮件测试' # 邮件主题 message['Subject'] = Header(subject, 'utf-8') try: smtpObj = smtplib.SMTP(smtp_server, 25) # 连接邮件服务器 smtpObj.login(sender, password) # 登录邮件服务器 smtpObj.sendmail(sender, receiver, message.as_string()) # 发送邮件 print('发送成功') except smtplib.SMTPException as e: print('发送失败', e) finally: smtpObj.quit() # 断开连接

以上代码中,我们在email.mime.text.MIMEText()类的第一个参数中添加了HTML内容,第二个参数设置为'html'即可。

总结

Python邮件发送功能是Python的重要部分,我们可以使用Python的smtplib库、email.mime.text、email.mime.multipart和email.mime.application等库来发送纯文本、HTML格式或带附件的邮件。Python邮件发送功能的快速掌握可以有效地降低企业邮件沟通成本,提高沟通效率。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。