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()#关闭连接


三.代码运行后截图:

image.png
上一篇下一篇

猜你喜欢

热点阅读