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

如何利用Python的smtplib函数来发送电子邮件

发布时间:2023-06-25 21:04:10

Python中的smtplib模块提供了发送电子邮件的能力。使用这个模块可以通过代码来发送电子邮件。本文将介绍如何使用Python的smtplib模块发送电子邮件。

发送邮件需要以下步骤:

1.登录邮件服务器。

2.设置发送人和接收人的信息。

3.设置邮件主题,正文和附件。

4.发送邮件。

Python中的smtplib模块提供了SMTP协议的实现,该协议可用于发送电子邮件。SMTP协议用于发送邮件,而POP3和IMAP协议用于接收邮件。

以下是使用Python的smtplib模块发送邮件的步骤:

1.导入smtplib模块

要使用Python的smtplib模块来发送电子邮件,需要导入该模块。可以使用以下代码导入模块:

import smtplib

2.创建SMTP对象并登录

在创建SMTP对象之前,需要确定要使用的邮件服务器名称和端口号。可以使用以下代码创建SMTP对象:

smtpObj = smtplib.SMTP('mail.example.com', 25)

这里使用smtpObj对象表示连接到邮件服务器,并通过使用SMTP的验证机制来登录。

如果邮件服务器需要安全连接,则使用以下代码:

smtpObj = smtplib.SMTP_SSL('mail.example.com', 465)

需要提供邮件服务器的主机名和端口号。

然后使用以下代码登录SMTP服务器:

smtpObj.login('example_user', 'example_password')

3.设置发送人和接收人

使用以下代码设置发送人和接收人:

sender = 'example_sender_mail@example.com'
receiver = 'example_receiver_mail@example.com'

可以将多个接收方放在到接收者的列表中:

receivers = ['example_receiver_mail_1@example.com', 'example_receiver_mail_2@example.com']

将发送者和接收者信息添加到邮件的头部:

from email.mime.text import MIMEText
   
message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
message['From'] = sender
message['To'] = receivers[0]
message['Cc'] = receivers[1]
message['Subject'] = 'Python SMTP 邮件测试'

在这里使用email.mime.text.MIMEText类来创建邮件正文。还可以使用email.mime.multipart.MIMEMultipart类来发送多个内容的邮件。

在这里还添加了发送者,接收者的信息,可以使用多个接收人。

4.添加附件

可以使用以下代码添加附件:

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
   
message = MIMEMultipart()
message['From'] = sender
message['To'] = receivers[0]
message['Cc'] = receivers[1]
message['Subject'] = 'Python SMTP 邮件测试'
   
# 添加文本信息
text_content = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
message.attach(text_content)
   
# 添加附件
pdf_path = '/path/to/pdf_file.pdf'
pdf_file_name = 'pdf_file.pdf'
pdf_attachment = MIMEApplication(open(pdf_path, 'rb').read(), _subtype = 'pdf')
pdf_attachment.add_header('Content-Disposition', 'attachment',filename = pdf_file_name)
message.attach(pdf_attachment)

在这里使用email.mime.application.MIMEApplication类来附加PDF附件。使用_open_()函数从文件中读取内容并使用_add_header_()函数来设置附件的文件名和Content-Disposition。

还可以使用MIMENonMultipart类来添加非文本附件:

from email.mime.image import MIMEImage
   
# 添加图像附件
image_path = '/path/to/image_file.jpg'
image_file_name = 'image_file.jpg'
with open(image_path, 'rb') as f:
  image_data = f.read()
  image = MIMEImage(image_data)
  message.attach(image)

5.发送邮件

在设置好所有必需的邮件相关信息后,使用以下代码来发送邮件:

try:
    smtpObj.sendmail(sender, receivers, message.as_string())  
    print("邮件发送成功")
except SMTPException:
    print("Error: 无法发送邮件")
finally:
    smtpObj.quit()

在这里,使用sendmail函数发送邮件,该函数接受发送者、接收者和消息字符串作为参数。消息字符串应该是邮件的头部加上正文的字符串。

发送邮件后,使用quit函数来关闭SMTP链接。

总结

本文介绍了如何使用Python的smtplib模块来发送电子邮件。

首先需要创建SMTP对象并登录。然后设置发送人和接收人的信息,设置邮件主题,正文和附件。最后发送邮件。完整代码实现具有完整的注释,并提供了添加多个接收人和附件的示例。