SMTP 发送邮件
2019-03-20 本文已影响0人
庭阶
一.环境准备
1.开启SMTP服务,比如用qq 邮箱做测试账号,则需要先检查下是否已经开启了SMTP.
步骤如下:
1)打开邮箱页面,点击“设置”
image.png
2)在设置页面,点击“账号”
image.png
3)找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,并开启SMTP服务
image.png
开启后要记得第三方登录授权码,在代码中的发件人密码就是该授权密码,而不是平常在UI登录邮箱的那个密码
2.找到SMTP和POP3的服务器地址
1).在qq 邮箱首页,点击帮助中心
image.png
2)在查询框中输入相关字符,如输入“SMTP”,在出现的总多结果中,点击相关的信息,如截图:
image.png
3)步骤2)后的结果截图
image.png
二.代码实现
#coding:utf-8 #强制使用utf-8编码格式
import smtplib
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr,formataddr
def _format_addr(s):
name,addr=parseaddr(s)
return formataddr((Header(name,'utf-8').encode(),addr))
from_addr=input('请输入发送人邮箱地址:')
password=input('请输入密码:')#注意,这里是第三方客户端登录授权密码,不是邮箱的登录密码
to_addr=input('请输入收件人邮箱地址:')
smtp_server=input('请输入smtp 服务器地址:')
#from_addr = 'xxxxxx@qq.com'
#password = 'zms.....'
#to_addr = 'xxxxxxxx@qq.com'
#smtp_server = 'smtp.qq.com'
msg=MIMEText('hello,send by python...','plain','utf-8')
msg['From']=_format_addr('python爱好者<%s>' % from_addr)
msg['To']=_format_addr('管理员<%s>' % to_addr)
msg['Subject']=Header('来自SMTP,,,,,','utf-8').encode()
server = smtplib.SMTP(smtp_server,25) # SMTP协议默认端口是25
#server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()#关闭连接