Python Exchange 发送邮件

简介

在现代互联网时代,电子邮件成为了人们沟通的重要方式之一。而使用Python编写程序,可以很方便地实现邮件的发送和接收功能。在Python中,有很多第三方库可以帮助我们实现邮件的功能,其中比较常用的是smtplibemail库。本文将介绍如何使用这两个库来发送邮件。

准备工作

在开始编写代码之前,我们需要安装smtplibemail库。可以使用以下命令来安装:

pip install smtplib
pip install email

发送邮件

使用smptlib库发送邮件需要以下步骤:

  1. 导入必要的库:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
  1. 设置邮箱服务器和端口:
mail_host = 'smtp.example.com'
mail_port = 25

请注意,以上的mail_hostmail_port需要根据你的邮箱提供商进行设置,不同的邮箱提供商可能有不同的设置。

  1. 设置发件人和收件人:
sender = 'sender@example.com'
receiver = 'receiver@example.com'

其中,sender是发件人邮箱地址,receiver是收件人邮箱地址。

  1. 设置邮件内容:
subject = 'Python邮件测试'
message = '这是一封使用Python发送的测试邮件。'

其中,subject是邮件主题,message是邮件内容。

  1. 构造邮件内容:
msg = MIMEText(message, 'plain', 'utf-8')
msg['From'] = Header(sender, 'utf-8')
msg['To'] = Header(receiver, 'utf-8')
msg['Subject'] = Header(subject, 'utf-8')
  1. 登录邮箱服务器并发送邮件:
try:
    smtpObj = smtplib.SMTP()
    smtpObj.connect(mail_host, mail_port)
    smtpObj.login(sender, 'password')
    smtpObj.sendmail(sender, [receiver], msg.as_string())
    print('邮件发送成功')
except smtplib.SMTPException:
    print('邮件发送失败')

以上代码通过SMTP()方法创建了一个SMTP对象,然后使用connect()方法连接到邮箱服务器,login()方法登录邮箱,sendmail()方法发送邮件。如果发送成功,会输出"邮件发送成功",否则输出"邮件发送失败"。

邮件附件

除了发送纯文本的邮件,我们还可以发送带有附件的邮件。email库提供了MIMEMultipart类来构造带有附件的邮件。

以下是一个发送带有附件的邮件的示例代码:

from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

msg = MIMEMultipart()
msg['From'] = Header(sender, 'utf-8')
msg['To'] = Header(receiver, 'utf-8')
msg['Subject'] = Header(subject, 'utf-8')

# 添加邮件正文
msg.attach(MIMEText(message, 'plain', 'utf-8'))

# 添加附件
attachment = MIMEBase('application', 'octet-stream')
attachment.set_payload(open('attachment.txt', 'rb').read())
encoders.encode_base64(attachment)
attachment.add_header('Content-Disposition', 'attachment', filename='attachment.txt')
msg.attach(attachment)

try:
    smtpObj = smtplib.SMTP()
    smtpObj.connect(mail_host, mail_port)
    smtpObj.login(sender, 'password')
    smtpObj.sendmail(sender, [receiver], msg.as_string())
    print('邮件发送成功')
except smtplib.SMTPException:
    print('邮件发送失败')

以上代码通过创建一个MIMEMultipart对象,然后调用attach()方法添加邮件正文和附件。附件可以是任意文件,需要使用open()函数读取文件内容并使用MIMEBase对象表示。

总结

本文介绍了使用Python发送邮件的方法,通过smtplibemail库可以很方便地实现邮件的发送功能。同时,我们还演示了如何发送带有附件的邮件。希望本文对你学习和使用Python发送邮件有所帮助。

pie
    title 邮件发送成功与失败比例
    "成功" : 80