指标:126/163邮箱
import smtplib import time from email.header import Header from email import encoders from email.mime.base import MIMEBase from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.utils import parseaddr, formataddr def 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)) # <a href="https://www.gaodaima.com/tag/%e9%82%ae%e4%bb%b6" title="查看更多关于邮件的文章" target="_blank">邮件</a>注释 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 = '[email protected]' # 邮件发送方 receivers = ['[email protected]', '[email protected]'] # 接管邮件的邮箱 receivers_single = ['[email protected]'] # 接管邮件的邮箱 cc_mail = ['[email protected]'] # 抄送人 # 口令受权码,不含空格 mail_pass = "xxxxxxxxxx" content_text = "邮件注释测试" content = '''连忙加油往前冲 <h1>测试test</h1> <h2 style="color:red">看看这里显示什么</h1> <a href="http://www.runoob.com/<a href="https://www.gaodaima.com/tag/python" title="查看更多关于python的文章" target="_blank">python</a>/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’
邮件发送胜利