python3 通过qq 服务器 发送邮件

# -*- 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 = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.runoob.com">这是一个链接</a></p>
"""
#此处填好邮件的正文
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()

posted on 2016-09-14 09:18  Kernel_wu  阅读(336)  评论(0编辑  收藏  举报

导航