Python 发送邮件

Python 发送邮件

Python 发送邮件

在现代社会,电子邮件已经成为了人们日常生活和工作中必不可少的一部分。而对于程序员来说,通过编写代码来自动发送邮件也是一种非常常见的操作。Python 是一种功能强大且易于学习的编程语言,它提供了多种库和模块,方便我们在程序中实现发送邮件的功能。

本文将详细介绍如何使用 Python 发送邮件,包括设置邮箱账号信息、编写发送邮件的代码、处理附件发送等内容。希望通过本文的学习,读者能了解如何在自己的项目中集成发送邮件功能。

设置邮箱账号信息

在使用 Python 发送邮件之前,我们需要首先设置邮箱账号信息。这包括发件人邮箱地址、发件人用户名、发件人密码、SMTP 服务器地址等信息。以下是一些常用邮件服务提供商的 SMTP 服务器地址和端口:

  • Gmail:SMTP 服务器地址为 smtp.gmail.com,端口号为 587
  • 阿里云企业邮箱:SMTP 服务器地址为 smtp.mxhichina.com,端口号为 465
  • QQ 邮箱:SMTP 服务器地址为 smtp.qq.com,端口号为 465

根据自己的邮箱供应商设置好上述信息后,我们就可以开始编写 Python 代码来发送邮件了。

编写发送邮件的代码

Python 提供了 smtplib 模块,可以帮助我们连接到 SMTP 服务器并发送邮件。以下是一个简单的发送邮件的代码示例:

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

# 设置邮箱账号信息
mail_host = "smtp.qq.com"
mail_user = "your_email@qq.com"
mail_pass = "your_password"

sender = mail_user
receivers = ["recipient1@example.com", "recipient2@example.com"]

# 创建一个带附件的邮件对象
message = MIMEMultipart()
message["From"] = Header("发件人姓名", "utf-8")
message["To"] = Header("收件人姓名", "utf-8")
subject = "Python 邮件测试"
message["Subject"] = Header(subject, "utf-8")

# 邮件正文内容
message.attach(MIMEText("这是一封通过 Python 发送的邮件。", "plain", "utf-8"))

# 构造附件
attachment = MIMEText(open("example.txt", "rb").read(), "base64", "utf-8")
attachment["Content-Type"] = "application/octet-stream"
attachment["Content-Disposition"] = 'attachment; filename="example.txt"'
message.attach(attachment)

# 连接 SMTP 服务器并发送邮件
try:
    smtpObj = smtplib.SMTP_SSL(mail_host, 465)
    smtpObj.login(mail_user, mail_pass)
    smtpObj.sendmail(sender, receivers, message.as_string())
    print("邮件发送成功")
except smtplib.SMTPException as e:
    print("Error: 无法发送邮件 - ", e)

在上述代码中,我们首先导入了 smtplib 模块和相关的类,然后设置了邮箱账号信息。接着创建了一个带有附件的邮件对象,并最终通过 SMTP 服务器发送了一封邮件。

运行结果

执行以上代码后,如果一切设置正确,您将看到类似以下输出:

邮件发送成功

这意味着邮件已经成功发送到收件人邮箱。

处理附件发送

在实际项目中,我们可能需要发送一些重要的附件,比如报表、日志文件等。上面的代码中我们已经演示了如何发送一个附件,只需要将文件名传递给 MIMEText 并指定其类型及编码即可。

另外,如果需要发送多个附件,只需要重复构造多个 MIMEText 对象并添加到 message 中即可。

总结

通过本文的学习,我们了解了如何使用 Python 发送邮件。提供了常用邮件服务商的 SMTP 服务器地址和端口号,展示了编写发送邮件代码的示例,讲解了发送带附件的邮件的方法。

发送邮件是一个非常实用的功能,可以帮助我们实现自动化通知、报警等功能。读者可以根据自己的需求和场景扩展代码,并在实际项目中应用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程