利用Python发邮件
from email.mime.text import MIMEText from email.header import Header from email.utils import parseaddr, formataddr import smtplib def _format_addr(s): name, addr = parseaddr(s) return formataddr((Header(name, 'utf-8').encode(), addr)) from_addr = input("From: ") password = input("Password: ") to_addr = input("To: ") smtp_server = input("SMTP Server: ") msg = MIMEText("hello, send by Python...", 'plain', 'utf-8') msg["From"] = _format_addr('Python爱好者<%s>' %from_addr) msg['To'] = _format_addr("管理员<%s>" % to_addr) msg['Subject'] = Header('来自SMTP的问候...', 'utf-8').encode() server = smtplib.SMTP(smtp_server, 25) server.login(from_addr, 'abc123,') server.sendmail(from_addr, to_addr, msg.as_string()) server.quit()
如果是发送 html 邮件,只需要做如下修改即可:
msg = MIMEText("<html><body><h1>Hello</h1>"+"<p>send by Python</p> " + "</body></html>", 'html', 'utf-8')
发送带附件的邮件:
from email.mime.text import MIMEText from email.header import Header from email.utils import parseaddr, formataddr from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase import smtplib from email import encoders def _format_addr(s): name, addr = parseaddr(s) return formataddr((Header(name, 'utf-8').encode(), addr)) from_addr = input("From: ") password = input("Password: ") to_addr = input("To: ") smtp_server = input("SMTP Server: ") msg = MIMEMultipart() msg["From"] = _format_addr('Python爱好者<%s>' %from_addr) msg['To'] = _format_addr("管理员<%s>" % to_addr) msg['Subject'] = Header('来自SMTP的问候...', 'utf-8').encode() msg.attach(MIMEText('send with file...', 'plain', 'utf-8')) with open(r'C:\Users\Administrator\Downloads\aa.jpeg','rb') as f: mime = MIMEBase('image', 'jpeg', filename='aa.jpeg') mime.add_header("Content-Disposition", 'attachment', filename='aa.jpeg') mime.add_header('Content-ID', '<0>') mime.add_header('X-Attachment-ID', '0') mime.set_payload(f.read()) encoders.encode_base64(mime) msg.attach(mime) server = smtplib.SMTP(smtp_server, 25) server.login(from_addr, 'abc123,') server.sendmail(from_addr, to_addr, msg.as_string()) server.quit()
如果需要发送的附件图片能在邮件正文中显示,可以修改:
msg.attach(MIMEText('<html><body><h1>Hello</h1>' + '<p><img src="cid:0"></p>' + "</body></html>", 'html', 'utf-8'))

浙公网安备 33010602011771号