smtplib:邮件发送库
2025-02-17
smtplib模块额常用类与方法
SMTP类定义 smtplib.SMTP(host[,port[,local_hostname[,timeout]]]),作为SMTP的构造函数。功能是与smtp服务器建立连接。连接成功,就可以向服务器发送相关请求
有: 登录 校验 发送 退出
host参数:表示 远程smtp主机地址。 如 smtp.163.com
port参数:表示 连接端口。 默认为25
local_hostname参数:作用是在本地主机的FQDN(完整域名)发送HELO/EHLO(标识用户身份)指令。
timeout参数: 为连接或尝试在多少秒超时
SMTP类具有下面方法:
SMTP.connect([host[,port]])方法:连接远程smtp主机方法。
- host:为主机地址
- port:为远程主机smtp端口,默认 25
- 也可以知己使用 host:port 形式来标识,比如: SMTP.connect("smtp.163.com","25")
SMTP.login(user,password)方法,远程smtp主机的校验方法,参数为用户名密码
- SMTP.login("python@163.com","123456")
SMTP.sendmail(from_addr,to_addrs,msg[,mail_options,rcpt_options])方法,实现邮件的发送功能。
- 参数依次是:发件人,收件人,邮件内容
- SMTP.sendmail("python@163.com","demo@163.com",body) body内容定义如下 ''' FROM:abc@163.com To: demo@163.com subject:test mail test mail body '''
SMTP.starttls([keyfile[,certfile]]) 启用TLS(安全传输)模式,所有SMTP指令都将加密传输。
- 使用gmail的smtp服务时需要启动此项才能正常发送邮件。
SMTP.quit() 方法,断开SMTP服务器的连接
# 案例 使用163邮箱向QQ邮箱发送测试邮件
import smtplib
import string
HOST = "smtp.163.com" # 定义smtp主机
SUBJECT = "Test email form wli" # 定义邮件主题
TO = "xxxx@qq.com" # 定义收件人邮件地址
FROM = "xxxx@163.com" # 定义发件人的邮件地址
text = "this is a testing" # 邮件的内容
string = f'''FROM: {FROM}
TO: {TO}
Subject: {SUBJECT}
'''
type(string)
BODY = ''.join(string)
print(BODY)
server = smtplib.SMTP() # 创建一个SMTP()对象
server.connect(HOST,"25") # 通过connect方法连接smtp主机
# server.starttls() # 启动安全传输模式
server.login("xxxx@163.com","xxxxx") # 链接到服务器
server.sendmail(FROM,TO,string) # 发送邮件
server.quit() # 断开SMTP链接