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服务器需要身份验证,则需要使用正确的用户名和密码进行身份验证。
- 发送邮件时,必须确保指定的邮件地址是有效的。