#/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')