Python3 SMTP发送邮件教程

Python3 SMTP发送邮件教程

引言

随着互联网的普及,电子邮件已经成为人们日常工作和生活中不可或缺的通讯工具。Python作为一门强大的编程语言,同样提供了发送电子邮件的功能。本文将详细讲解如何在Python3中使用SMTP协议发送邮件,包括准备工作、代码实现和常见问题解决。

准备工作

在开始编写代码之前,我们需要准备以下几项内容:

  1. 电子邮件服务器地址和端口:大多数电子邮件服务提供商如Gmail、Outlook等使用SMTP协议进行邮件发送。以Gmail为例,SMTP服务器地址为smtp.gmail.com,端口为587。

  2. 用户名和密码:用于登录SMTP服务器发送邮件的账号和密码。

  3. Python环境:确保你的计算机上安装了Python3。

代码实现

以下是一个使用Python3发送电子邮件的示例代码:

python 复制代码
import smtplib
from email.mime.text import MIMEText
from email.header import Header

def send_email(sender, receiver, password, subject, body, smtp_server, smtp_port):
    """
    发送电子邮件的函数
    :param sender: 发件人邮箱地址
    :param receiver: 收件人邮箱地址
    :param password: 发件人邮箱密码
    :param subject: 邮件主题
    :param body: 邮件正文内容
    :param smtp_server: SMTP服务器地址
    :param smtp_port: SMTP服务器端口
    """
    # 创建一个MIMEText对象,用于封装邮件正文
    message = MIMEText(body, 'plain', 'utf-8')
    message['From'] = Header(sender, 'utf-8')  # 发件人
    message['To'] = Header(receiver, 'utf-8')  # 收件人
    message['Subject'] = Header(subject, 'utf-8')  # 主题

    try:
        # 创建SMTP对象,连接到服务器
        server = smtplib.SMTP_SSL(smtp_server, smtp_port)
        server.login(sender, password)  # 登录
        server.sendmail(sender, [receiver], message.as_string())  # 发送邮件
        print("邮件发送成功!")
    except smtplib.SMTPException as e:
        print("邮件发送失败:", e)
    finally:
        server.quit()  # 断开连接

# 示例用法
if __name__ == '__main__':
    sender = 'your_email@example.com'  # 发件人邮箱地址
    receiver = 'receiver_email@example.com'  # 收件人邮箱地址
    password = 'your_password'  # 发件人邮箱密码
    subject = 'Python SMTP邮件测试'  # 邮件主题
    body = '这是一封由Python发送的测试邮件。'  # 邮件正文内容
    smtp_server = 'smtp.example.com'  # SMTP服务器地址
    smtp_port = 465  # SMTP服务器端口

    send_email(sender, receiver, password, subject, body, smtp_server, smtp_port)

注意事项

  1. 由于安全原因,某些邮箱服务商可能要求使用授权码而非邮箱密码登录SMTP服务器。

  2. 如果你使用的是Gmail或其他需要身份验证的邮箱服务商,需要开启"Less secure app access"(较少安全的应用程序访问)选项。

  3. 代码中的SMTP服务器地址和端口可能因服务商而异,请根据实际情况修改。

总结

本文详细介绍了如何在Python3中使用SMTP协议发送邮件。通过阅读本文,读者可以了解到发送邮件所需的准备工作、代码实现以及注意事项。希望本文对大家有所帮助。

相关推荐
Wang's Blog14 分钟前
Java 项目实战:交友项目 - 用户体系集成总结
java·开发语言·交友
中科三方1 小时前
IPv6检测常见问题:AAAA记录检测不通过是什么原因?
开发语言·php
沫璃染墨2 小时前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包
linux·服务器·开发语言·网络·c++·tcp/ip·html
刚入门的大一新生2 小时前
Linux-线程互斥
java·开发语言
香芋芋圆2 小时前
iD-editor 详解|OSM官方在线编辑器,基于D3.js的轻量地图编辑器
开发语言·javascript·编辑器
小熊恋旧3 小时前
Python 面向对象编程:方法、属性、继承与多态详解
开发语言·python
云边云科技_云网融合3 小时前
面向汽车零部件制造业场景的解决方案 | 70 秒:一台车下线的时间里,藏着五张网
开发语言·汽车·php
Evand J3 小时前
【PMSM滤波例程2】PMSM未知负载转矩观测EKF。MATLAB例程(负载增广EKF与实际仿真结果)。附下载链接
开发语言·matlab·电机
will_net3 小时前
apollo 站点部署&C#接入
开发语言·c#·apollo
晗夜未央4 小时前
任务队列反复失败,先分清重试、阻塞和结果待核对
开发语言·javascript