=Start=
缘由:
之前用Python写过发送邮件的功能,但每次在使用的时候还不太方便,所以考虑着整理一下放在这里,方便以后使用、参考。
正文:
参考解答:
- 抄送(CC)
- 密送(BCC)
#!/usr/bin/env python # coding=utf-8 import logging from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText import smtplib class SendMail(object): def __init__(self, host='smtp.qq.com', port=587, user='', passwd=''): self.s = smtplib.SMTP('{0}:{1}'.format(host, port)) def mail(self, subject, content, mail_from, mail_to_str, mail_cc_str='', mail_bcc_str=''): if isinstance(subject, unicode): subject = subject.encode('utf-8') if isinstance(content, unicode): content = content.encode('utf-8') msg = MIMEMultipart('alternative') msg['subject'] = str(subject).decode('utf-8') msg['From'] = mail_from msg['To'] = mail_to_str msg['Cc'] = mail_cc_str msg['Bcc'] = mail_bcc_str mail_to_all = mail_to_str.split(",") + mail_cc_str.split(",") + mail_bcc_str.split(",") msg.attach(MIMEText(content, 'plain', 'utf-8')) try: self.s.ehlo() self.s.starttls() self.s.login(user, passwd) self.s.sendmail(msg['From'], mail_to_all, msg.as_string()) self.s.quit() except StandardError as e: logging.error('Sent email Error: {0}'.format(e)) def send_email(subject, content, mail_to, mail_cc='', mail_bcc=''): if isinstance(subject, unicode): subject = subject.encode('utf-8') if isinstance(content, unicode): content = content.encode('utf-8') msg = MIMEMultipart('alternative') msg['subject'] = str(subject).decode('utf-8') msg['From'] = '[email protected]' msg['To'] = mail_to msg['Cc'] = mail_cc msg['Bcc'] = mail_bcc mail_to_all = mail_to.split(",") + mail_cc.split(",") + mail_bcc.split(",") msg.attach(MIMEText(content, 'plain', 'utf-8')) try: s = smtplib.SMTP('smtp.qq.com:587') s.ehlo() s.starttls() s.login('user', 'passwd') s.sendmail(msg['From'], mail_to_all, msg.as_string()) s.quit() except StandardError as e: logging.error('Sent email Error: {0}'.format(e))
参考链接:
- https://stackoverflow.com/questions/1546367/python-how-to-send-mail-with-to-cc-and-bcc
- http://outofmemory.cn/code-snippet/14185/usage-python-smtplib-library-email-augment-cc-bcc
- http://outofmemory.cn/code-snippet/16442/Python-send-email-with-cc-bcc
=END=
《“Python的邮件发送功能模块编写”》 有 1 条评论
用Python发送 HTML格式 的邮件
https://stackoverflow.com/questions/882712/sending-html-email-using-python
http://www.runoob.com/python/python-email.html
https://docs.python.org/2/library/email-examples.html
`
# 可以考虑将 ‘html’/’plain’ 作为参数传入,方便控制,但一般情况下都用 html 也没啥问题
msg.attach(MIMEText(content, ‘html’, ‘utf-8’)) #以 HTML格式 发送
msg.attach(MIMEText(content, ‘plain’, ‘utf-8’)) #以 文本格式 发送
`