Python3 SMTP发送邮件


Python3 SMTP发送邮件

Python3提供了SMTP(Simple Mail Transfer Protocol)模块用于发送电子邮件。SMTP是用于发送邮件的标准协议,使用SMTP模块可以方便地通过Python程序发送邮件。

SMTP模块的使用

SMTP模块的使用需要通过Python标准库中的smtplib模块来实现。在使用smtplib发送邮件之前,需要首先创建SMTP对象,然后利用SMTP对象发送邮件。

创建SMTP对象

SMTP模块提供了SMTP类用于创建SMTP对象。通过这个对象,我们可以实现与邮件服务器的连接和邮件的发送等操作。

创建SMTP对象的基本语法如下:

smtpObj = smtplib.SMTP([host[, port [, local_hostname]]])

参数说明:

  • host:SMTP服务器主机名,可以是IP地址或者域名。
  • port:SMTP服务器端口,默认为25。
  • local_hostname:如果SMTP服务器需要本地主机名,如果指定了此参数,Python会在本地机器上进行DNS解析,以获取指定参数的IP地址,用作SMTP邮件服务器的标识名称;如果没有指定local_hostname,则使用默认主机名。

发送邮件

SMTP对象创建成功后,可以利用它来发送邮件。SMTP模块提供了一些方法用于发送邮件,如:

  • SMTP.sendmail():用来发送邮件。
  • SMTP.quit():在完成邮件发送后,释放SMTP对象和与SMTP服务器的连接。
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])

参数说明:

  • from_addr:发送方的邮件地址。
  • to_addrs:邮件的接收方地址,可以是一个字符串,表示单个地址,也可以是一个包含多个地址的list。
  • msg:邮件内容,包括邮件标题、邮件正文等信息。
  • mail_options:如果要添加一些邮件选项,则可以在此指定。
  • rcpt_options:如果要添加一些邮件选项,则可以在此指定。

以下是一个具体的代码实例。这个例子实现了利用Python发送一封邮件的功能。

# _*_ coding:utf-8 _*_

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

my_sender = 'xxxxxx@163.com'  # 发件人邮箱账号
my_pass = 'xxxxxxxxxxxx'  # 发件人邮箱密码
my_receiver = 'xxxxxx@qq.com'  # 收件人邮箱账号

def mail():
    ret = True
    try:
        # 创建一个MIMEText对象
        msg = MIMEText('Python程序发送邮件测试', 'plain', 'utf-8')
        msg['From'] = formataddr(["发件人名称", my_sender])
        msg['To'] = formataddr(["收件人名称", my_receiver])
        msg['Subject'] = 'Python test'

        # 创建SMTP对象并连接到SMTP服务器
        server = smtplib.SMTP("smtp.163.com", 25)
        server.login(my_sender, my_pass)
        server.sendmail(my_sender, [my_receiver, ], msg.as_string())
        server.quit()
    except Exception:
        ret = False
    return ret

ret = mail()
if ret:
    print("邮件发送成功")
else:
    print("邮件发送失败")

其他注意事项

  • 发送邮件时,需要确保SMTP服务器已打开且能够正常访问。
  • 如果SMTP服务器需要身份验证,则需要使用正确的用户名和密码进行身份验证。
  • 发送邮件时,必须确保指定的邮件地址是有效的。