#/usr/bin/python3/
# coding:utf-8
#xiaohe_QQ496631085
import smtplib,base64,time
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
#只发送内容
def send_text(zhuti,content):
mail_user = base64.b64decode('NDk2NjMxMDg1QHFxLmNvbQ==').decode('utf-8')
mail_pass = base64.b64decode('cWpuZ3lldGR3aWN3YmhoZw==' ).decode('utf-8')
mail_to=base64.b64decode('MTY3OTQ2NjBAcXEuY29t').decode('utf-8')
send_email(mail_user,mail_pass,mail_to,content,file_path=None,zhuti=zhuti)
#发送:内容和文件
def send_file(zhuti,content,file_path):
mail_user = base64.b64decode('NDk2NjMxMDg1QHFxLmNvbQ==').decode('utf-8')
mail_pass = base64.b64decode('cWpuZ3lldGR3aWN3YmhoZw==' ).decode('utf-8')
mail_to=base64.b64decode('MTY3OTQ2NjBAcXEuY29t').decode('utf-8')
send_email(mail_user,mail_pass,mail_to,content,file_path,zhuti=zhuti)
# send_email(mail_user,mail_pass,mail_to,content,file_path,zhuti)
#写成了一个通用的函数接口,想直接用的话,把参数的注释去掉就好
def send_email(mail_user,mail_pass,mail_to,content,file_path=None,zhuti=None):
msg = MIMEMultipart()
if zhuti:
subject=zhuti+time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
else:
subject = "机器人" # 主题
# content = "你好"
text = MIMEText(content)
msg.attach(text)
#docFile = 'C:/Users/main.py' 如果需要添加附件,就给定路径
if file_path: #最开始的函数参数我默认设置了None ,想添加附件,自行更改一下就好
docFile = file_path
docApart = MIMEApplication(open(docFile, 'rb').read())
docApart.add_header('Content-Disposition', 'attachment', filename=docFile)
msg.attach(docApart)
msg['Subject'] = subject
msg['From'] = mail_user
msg['To'] = mail_to
try:
# s = smtplib.SMTP_SSL("smtp.qq.com", 25)
# s.login(mail_user, mail_pass)
# s.sendmail(mail_user, mail_to, msg.as_string())
s = smtplib.SMTP()
s.connect("smtp.qq.com", 25) # 25 为 SMTP 端口号
# s.ehlo()
# s.starttls()
# s.ehlo()
s.login(mail_user, mail_pass)
s.sendmail(mail_user, mail_to, msg.as_string())
return 'send_ok'
s.quit()
except:
return 'send_error'
print(send_text('我就测试发送一下' ,'这是内容2'))
# send_file('邮件模块','neirong',u'老人与海.flac')