# -*- encoding: utf-8 -*- import os, sys import smtplib from smtplib import SMTP_SSL from email.header import Header from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication mailInfo = { #邮件发件人 "from": "*******@qq.com", #邮件接收人列表,支持多个接收人 "to": ['*******@qq.com', '*******@qq.com'], #邮件服务器,这里是QQ邮箱的服务器地址 "hostname": "smtp.qq.com", #邮件发送人的用户名 "username": "*****@qq.com", #邮件发送人的密码,这里是QQ邮箱的授权码,在'设置'/'账号'/'POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务'/下打开所有的服务 #并记录授权码 "password": "*********", #邮件的主题,也就是标题 "mailsubject": "滑动验证码破解程序", #邮件的正文内容 "mailtext": "支持PYTHON3" "图片只是利用了RGB比较进行处理" "后续增加二值处理", #邮件的附件 "attachment": ['slidingVerification Code.py'], #邮件的编码格式,不用修改 "mailencoding": "utf-8" } def sendEmail(): #SMTP是邮件的一种协议,发送邮件需要按照这种协议进行 #SMTP_SSL是SMTP的加密协议,QQ邮箱使用的是这种协议 #此处先创建一条QQ邮箱的协议 smtp = SMTP_SSL(mailInfo["hostname"]) #这条不用管 smtp.set_debuglevel(1) #这条也不用管 smtp.ehlo(mailInfo["hostname"]) #使用用户名和密码登陆QQ邮箱 smtp.login(mailInfo["username"], mailInfo["password"]) #MIMEText是邮件内容的载体 #此处填好邮件的正文 msg = MIMEText(mailInfo["mailtext"], "plain", mailInfo["mailencoding"]) #填好邮件的标题 msg["Subject"] = Header(mailInfo["mailsubject"], mailInfo["mailencoding"]) #填好发件人 msg["from"] = mailInfo["from"] #填好收件人 msg["to"] = ";".join(mailInfo["to"]) #发送邮件 smtp.sendmail(mailInfo["from"], mailInfo["to"], msg.as_string()) #退出 smtp.quit() def sendEmailWithAttachment(): #SMTP是邮件的一种协议,发送邮件需要按照这种协议进行 #SMTP_SSL是SMTP的加密协议,QQ邮箱使用的是这种协议 #此处先创建一条QQ邮箱的协议 smtp = SMTP_SSL(mailInfo["hostname"]) #这条不用管 #smtp.set_debuglevel(1) #这条也不用管 #smtp.ehlo(mailInfo["hostname"]) #使用用户名和密码登陆QQ邮箱 smtp.login(mailInfo["username"], mailInfo["password"]) #MIMEMultipart是邮件内容的载体,可以携带附件 #此处创建该载体 msg = MIMEMultipart() #填好邮件的正文 msg.attach(MIMEText(mailInfo["mailtext"], "plain", mailInfo["mailencoding"])) #填好邮件的标题 msg["Subject"] = Header(mailInfo["mailsubject"], mailInfo["mailencoding"]) #填好发件人 msg["from"] = mailInfo["from"] #填好收件人 msg["to"] = ";".join(mailInfo["to"]) # 构造附件1,传送当前目录下的 test.txt 文件 #循环遍历所有的附件 for attFile in mailInfo["attachment"]: #读取文件内容 att = MIMEApplication(open(attFile, 'rb').read()) #创建附件,此处一定要是GBK格式,否则文件名会乱码 att.add_header('Content-Disposition', 'attachment', filename=('gbk', '', attFile)) #添加附件到邮件内 msg.attach(att) #发送邮件 smtp.sendmail(mailInfo["from"], mailInfo["to"], msg.as_string()) #退出 smtp.quit() def sendEmailWithHtml(): #SMTP是邮件的一种协议,发送邮件需要按照这种协议进行 #SMTP_SSL是SMTP的加密协议,QQ邮箱使用的是这种协议 #此处先创建一条QQ邮箱的协议 smtp = SMTP_SSL(mailInfo["hostname"]) #这条不用管 smtp.set_debuglevel(1) #这条也不用管 smtp.ehlo(mailInfo["hostname"]) #使用用户名和密码登陆QQ邮箱 smtp.login(mailInfo["username"], mailInfo["password"]) #MIMEText是邮件内容的载体 mail_msg = """Python 邮件发送测试...
""" #此处填好邮件的正文 msg = MIMEText(mail_msg, "html", mailInfo["mailencoding"]) #填好邮件的标题 msg["Subject"] = Header(mailInfo["mailsubject"], mailInfo["mailencoding"]) #填好发件人 msg["from"] = mailInfo["from"] #填好收件人 msg["to"] = ";".join(mailInfo["to"]) #发送邮件 smtp.sendmail(mailInfo["from"], mailInfo["to"], msg.as_string()) #退出 smtp.quit() #发送邮件(不带附件) #sendEmail() #发送邮件(携带附件) sendEmailWithAttachment() #发送邮件(正文为HTML) #sendEmailWithHtml()