您的位置:

Python SMTP邮件发送教程

随着互联网的发展,人们越来越离不开电子邮件。如何通过Python向别人或自己发送邮件呢?本教程将介绍如何使用Python的SMTP模块来发送电子邮件。

一、SMTP模块简介

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,是一种用于发送和接收邮件的协议。Python提供了SMTP模块来实现发送邮件的功能。

import smtplib

# 邮件发送者的SMTP服务器地址
smtp_server = 'smtp.qq.com'

# 发件人的邮箱和密码
smtp_user = 'example@qq.com'
smtp_password = 'examplepassword'

# 收件人的邮箱地址
to_email = 'toexample@qq.com'

# 构造邮件信息(包括标题和内容)
email_title = 'Python SMTP测试邮件'
email_content = '这是一封来自Python SMTP发送的邮件。'

# 使用SMTP发送邮件
try:
    # 登录SMTP服务器
    smtp_server = smtplib.SMTP(smtp_server, 587)
    smtp_server.starttls()
    smtp_server.login(smtp_user, smtp_password)

    # 发送邮件
    msg = 'From: ' + smtp_user + '\nTo: ' + to_email + '\nSubject: ' + email_title + '\n\n' + email_content
    smtp_server.sendmail(smtp_user, to_email, msg)

    # 退出SMTP服务器
    smtp_server.quit()
    print('邮件发送成功')
except Exception as e:
    print('邮件发送失败')
    print(e)

二、SMTP服务器的选择

在使用SMTP发送邮件时,需要指定使用哪个SMTP服务器。不同的SMTP服务器有不同的地址和端口号。常用的免费SMTP服务提供者有QQ邮箱、163邮箱、Gmail等。

以QQ邮箱为例,下面是它的SMTP服务器地址和端口号:

  • SMTP服务器地址:smtp.qq.com
  • SSL端口:465
  • TLS端口:587

需要注意的是,QQ邮箱需要开启SMTP服务才能使用SMTP发送邮件。开启SMTP服务的方法是登录QQ邮箱,进入“设置”页面,然后在“账户”选项卡中找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”这个选项,开启“POP3/IMAP/SMTP服务”和“开启IMAP/SMTP服务”,最后保存设置即可。

三、邮件内容的构造

邮件发送时,需要构造包括邮件标题和邮件内容在内的邮件信息。一般来说,邮件信息需要按照特定格式构造,格式如下:

From: 发件人邮箱地址
To: 收件人邮箱地址
Subject: 邮件标题

邮件内容

需要注意的是,邮件内容应该按照UTF-8编码。

对于邮件内容的构造,可以使用Python的字符串拼接功能,例如:

email_title = 'Python SMTP测试邮件'
email_content = '这是一封来自Python SMTP发送的邮件。'
msg = 'From: ' + smtp_user + '\nTo: ' + to_email + '\nSubject: ' + email_title + '\n\n' + email_content

四、发送邮件的错误处理

在使用SMTP发送邮件的过程中,可能会遇到一些错误。比如SMTP服务器连接失败、用户或密码错误等等。为了避免出现这些错误导致程序崩溃,我们需要对其进行错误处理。

可以使用try/except代码块来处理可能出现的异常情况,例如:

try:
    # 登录SMTP服务器
    smtp_server = smtplib.SMTP(smtp_server, 587)
    smtp_server.starttls()
    smtp_server.login(smtp_user, smtp_password)

    # 发送邮件
    msg = 'From: ' + smtp_user + '\nTo: ' + to_email + '\nSubject: ' + email_title + '\n\n' + email_content
    smtp_server.sendmail(smtp_user, to_email, msg)

    # 退出SMTP服务器
    smtp_server.quit()
    print('邮件发送成功')
except Exception as e:
    print('邮件发送失败')
    print(e)

五、完整代码示例

下面是一个完整的Python SMTP邮件发送代码示例:

import smtplib

# 邮件发送者的SMTP服务器地址
smtp_server = 'smtp.qq.com'

# 发件人的邮箱和密码
smtp_user = 'example@qq.com'
smtp_password = 'examplepassword'

# 收件人的邮箱地址
to_email = 'toexample@qq.com'

# 构造邮件信息(包括标题和内容)
email_title = 'Python SMTP测试邮件'
email_content = '这是一封来自Python SMTP发送的邮件。'

# 使用SMTP发送邮件
try:
    # 登录SMTP服务器
    smtp_server = smtplib.SMTP(smtp_server, 587)
    smtp_server.starttls()
    smtp_server.login(smtp_user, smtp_password)

    # 发送邮件
    msg = 'From: ' + smtp_user + '\nTo: ' + to_email + '\nSubject: ' + email_title + '\n\n' + email_content
    smtp_server.sendmail(smtp_user, to_email, msg)

    # 退出SMTP服务器
    smtp_server.quit()
    print('邮件发送成功')
except Exception as e:
    print('邮件发送失败')
    print(e)

以上就是Python SMTP邮件发送教程的全部内容。希望可以帮助到需要的读者。