指标:126/163邮箱
import smtplibimport timefrom email.header import Headerfrom email import encodersfrom email.mime.base import MIMEBasefrom email.mime.image import MIMEImagefrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.utils import parseaddr, formataddrdef SendMailSimple(sender, receivers, mail_pass, content, file, image): mail_host = "smtp.126.com" # 设置服务器 # message = MIMEText(content, 'plain', 'utf-8')#注释内容 plain代表纯文本 message = MIMEMultipart() message.attach(MIMEText(content)) # 邮件注释 message['From'] = sender message['To'] = ','.join(receivers) subject = 'Python主动简略邮件-%s' % time.ctime() message['Subject'] = subject # 邮件题目 try: # 增加文件到附件 with open(file, 'rb') as f: # MIMEBase示意附件的对象 mime = MIMEBase('text', 'txt', filename=file) # filename是显示附件名字 mime.add_header('Content-Disposition', 'attachment', filename=file) # 获取附件内容 mime.set_payload(f.read()) encoders.encode_base64(mime) # 作为附件增加到邮件 message.attach(mime) except FileNotFoundError as e: print(e) try: with open(image, 'rb') as f: # 图片增加到附件 mime = MIMEBase('image', 'image', filename=image) mime.add_header('Content-Disposition', 'attachment', filename=image) mime.set_payload(f.read()) encoders.encode_base64(mime) message.attach(mime) except FileNotFoundError as e: print(e) try: smtpObj = smtplib.SMTP_SSL(mail_host, 465) smtpObj.login(sender, mail_pass) smtpObj.sendmail(sender, receivers , str(message)) # message.as_string() smtpObj.quit() print("邮件发送胜利") except smtplib.SMTPException as e: print(e)def SendMail(sender, receivers, cc_mail, mail_pass, content, file, image): # 第三方 SMTP 服务 mail_host = "smtp.126.com" # 设置服务器 # 结构一个MIMEMultipart对象代表邮件自身 message = MIMEMultipart() message.attach(MIMEText(content, 'html', 'utf-8')) # 注释内容 plain代表纯文本,html代表反对html文本 message['From'] = sender message['To'] = ','.join(receivers) # 与真正的收件人的邮箱不是一回事 message['Cc'] = ','.join(cc_mail) subject = 'Python主动邮件-%s' % time.ctime() message['Subject'] = subject # 邮件题目 # 增加文件到附件 with open(file, 'rb') as f: # MIMEBase示意附件的对象 mime = MIMEBase('text', 'txt', filename=file) # filename是显示附件名字 mime.add_header('Content-Disposition', 'attachment', filename=file) # 获取附件内容 mime.set_payload(f.read()) encoders.encode_base64(mime) # 作为附件增加到邮件 message.attach(mime) with open(image, 'rb') as f: # 图片增加到附件 mime = MIMEBase('image', 'image', filename=image) mime.add_header('Content-Disposition', 'attachment', filename=image) mime.set_payload(f.read()) encoders.encode_base64(mime) message.attach(mime) # 将图片显示在注释 with open(image, 'rb') as f: # 图片增加到注释 msgImage = MIMEImage(f.read()) # 定义图片ID msgImage.add_header('Content-ID', '<image1>') message.attach(msgImage) try: smtpObj = smtplib.SMTP_SSL(mail_host, 465) smtpObj.login(sender, mail_pass) smtpObj.sendmail(sender, receivers + cc_mail, str(message)) # message.as_string() smtpObj.quit() print("邮件发送胜利") except smtplib.SMTPException as e: print(e)if __name__ == "__main__": sender = 'aaaaaa@126.com' # 邮件发送方 receivers = ['aaaaaa@126.com', 'ZZZZZZ@139.com'] # 接管邮件的邮箱 receivers_single = ['aaaaaa@126.com'] # 接管邮件的邮箱 cc_mail = ['PPPPPP@qq.com'] # 抄送人 # 口令受权码,不含空格 mail_pass = "xxxxxxxxxx" content_text = "邮件注释测试" content = '''连忙加油往前冲 <h1>测试test</h1> <h2 style="color:red">看看这里显示什么</h1> <a href="http://www.runoob.com/python/python-email.html">测试超链接</a><br> <p>图片显示测试:</p> <p><img src="cid:image1"></p> ''' file = 'Fx12.txt' image = 'language2.jpg' #SendMail(sender, receivers, cc_mail, mail_pass, content, file, image) SendMailSimple(sender, receivers_single, mail_pass, content_text, file, image)
本机运行后果:
D:\development\python_test_proj_2022\venv\Scripts\python.exe D:/development/python_test_proj_2022/venv/pyRun.py
[Errno 2] No such file or directory: 'Fx12.txt'
[Errno 2] No such file or directory: 'language2.jpg'
邮件发送胜利