发送邮件
协议
如何发送邮件,废话不多说,直接上代码
# mail.py # 直接导入内置模块 import smtplib, time # smtplib模块主要用于处理SMTP协议 # email模块主要处理邮件的头和正文等数据 from email.mime.application import MIMEApplication from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText # 构建邮件的主题对象 sender = '1xxxxxxxxxx@163.com' receivers = '2xxxxxxxx@qq.com' receiver_name = '啦啦啦' msg = MIMEMultipart() msg['Subject'] = 'Python测试邮件' msg['From'] = sender msg['To'] = receivers body = ''' 重置您的 无敌软件的 密码 __ __ ______ _ __ / /____ _____/ /_ / ____/___ ___ ____ _(_) / / __/ _ \/ ___/ __/ / __/ / __ `__ \/ __ `/ / / / /_/ __(__ ) /_ / /___/ / / / / / /_/ / / / \__/\___/____/\__/ /_____/_/ /_/ /_/\__,_/_/_/
尊敬的'''+receiver_name+'''您好:
您正在为登录邮箱为如下地址的 啦啦啦 账户重置密码:
xxxx@abc.com 请注意,如果这不是您本人的操作,请忽略并关闭此邮件。
如您确认重置 XXXX 的账户密码,请点击下方按钮。
重置密码 为安全起见,以上按钮为一次性链接,且仅在24小时内有效,请您尽快完成操作。 如有任何疑问或无法完成注册,请通过如下方式与我们联系:
邮箱:support@XXX.cn
微信助理:XXXXX
本邮件由系统自动发送,请勿回复。
您的智能项目助理
XXXXXXXX
''' content = MIMEText(body, 'html', 'utf-8') msg.attach(content) # 添加邮件附件 attach='./001-ExampleSourceURL.zip' attachment=MIMEApplication(open(attach,'rb').read() file_name=attach.aplit('/')[-1] attachment.add_header('Content-Disposition','attachment',filename=file_name) msg.attach(attachment) # 建立与邮件服务器的链接,并发送邮件 smtpObj = smtplib.SMTP() # 如果基于SSL则smtplib.SMTP_SSL smtpObj.connect('smtp.163.com', 25) # 这里是明文密码,不安全 ''' smtpObj.login(user='1xxxxxxxxxx@163.com', password='xxxxxxxxxx') smtpObj.sendmail(sender, receivers, str(msg)) smtpObj.quit() ''' # 注意,QQ邮件服务器不支持连续不停止发送,如果要发送多封,建议之间sleep几秒钟 # 如何登陆SMTP+SSL邮件服务器 # 授权码 auth_code='XXXXXXXXXXXXXXXX' smtpObj=smtplib.SMTP_SSL('smtp.163.com',465) smtpObj.login(user='1xxxxxxxxxx@163.com', password=auth_code) smtpObj.sendmail(sender, receivers, str(msg)) smtpObj.quit()
大家可以使用Wireshark进行抓包尝试理解smtp通信过程,在不使用授权码时抓到的仅仅是经过base64编码过的数据,很容易进行解码,从而轻易登陆你的邮件服务器,但是使用授权码的情况下抓到的都是经过加密的数据,相对来说会更加安全
编码解码encode.py
import bash64 source='5oiR5bCx55+l6YGT5L2g5Lya6Kej5a+G' print(base64.b64decode(source))