"""
@Date: Tue Nov 8 14:43:58 2016
@Author: Jeff <370610810@qq.com>
@Link:
@PythonVersion: v2.7.10
@Filename: sendmail.py
"""
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.utils import parseaddr, formataddr
import smtplib
import os.path
import codecs
import datetime,time
def _format_addr(s):
"""格式化邮件地址"""
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
class sendmail:
"""使用Python以指定邮箱发送邮件"""
mail_host = 'smtp.163.com'
mail_from = 'lemoncn2014@163.com'
mail_user = 'lemoncn2014'
mail_passwd = 'jgyMJU&,ki8'
msg = MIMEMultipart()
def __init__(self,mailContent,mailTo,getTitle,fileList):
"""使用email函数库构造email内容"""
self.mail_content = mailContent
self.mail_to = mailTo
self.mail_cc = '*****@xxxxxx.com'
self.get_title = getTitle
self.file = fileList
"""开始构造email
---构建带附件的邮件实例"""
sendmail.msg['From'] = _format_addr('<%s>' % sendmail.mail_from)
sendmail.msg['To'] = _format_addr('<%s>' % self.mail_to)
sendmail.msg['Cc'] = _format_addr('<%s>' % self.mail_cc)
sendmail.msg['Subject'] = Header(self.get_title).encode('utf8')
sendmail.msg.attach(self.mail_content)
if self.file:
print('Attachment(s) as follow:%s' % format(self.file))
with open(self.file, 'rb') as i:
atta = MIMEText(i.read(), 'base64', 'utf8')
atta["Content-Type"] = 'application/octet-stream'
atta["Content-Disposition"] = 'attachment; filename="{}"'.format(os.path.basename(self.file))
sendmail.msg.attach(atta)
else:
print('This message has no attachment.')
with open(self.file, 'rb') as f:
msgImage = MIMEImage(f.read())
msgImage.add_header('Content-ID', '<image1>')
sendmail.msg.attach(msgImage)
def send_mail(self):
try:
smtpObj = smtplib.SMTP_SSL(sendmail.mail_host, 994)
smtpObj.set_debuglevel(1)
smtpObj.login(sendmail.mail_user, sendmail.mail_passwd)
smtpObj.sendmail(sendmail.mail_from, [self.mail_to,self.mail_cc], sendmail.msg.as_string())
print(time.strftime('%a, %Y-%m-%d %H:%M:%S %z'),'sendmail succeed.')
except Exception as e:
print(e)
print(time.strftime('%a, %Y-%m-%d %H:%M:%S %z'),'sendmail failed.')
finally:
smtpObj.quit()
def main():
mymail = 'ooxx@oooxxx.com'
title = '[广告]有一个发财的机会正在向你招手,去看看吗?'.decode('utf8')
f = """
<html><title>有一个发财的机会正在向你招手,去看看吗?</title><body>
<p>由于这封邮件是通过程序自动发送的,它不能正常显示或是要是有什么问题,请及时
<a href="mailto:shiyao.zh@gmail.com?subject=购买理财通发财变轻松的反馈&cc=lemoncn2014@163.com">反馈给××有钱</a>,
非常感谢。</p>
<p>想做高富帅,请扫描下面的二维码并订阅;继续做穷逼,请<a href="#" onclick="alert('再见,穷逼!(作为有态度的媒体,我们不愿与穷逼说话。)')">退订</a>。</p>
<center><a href="http://opstrip.com/" target="_blank" alt="OPSTRIP.COM"><img src="cid:image1" height="80px" width="80px" /></a></center>
<p>如需投诉,请直拨妖妖灵。</p>
<p><font size="-2" color="gray">以上段子纯属搞笑。</font></p>
<hr>
<p>本段子由 <a href="http://opstrip.com/" target="_blank">OPSTRIP</a> 友情提供。不服你来点我呀!</p>
</body></html>
"""
content = MIMEText(f,'html','utf-8')
file = "http://opstrip.com/assets/blogImg/qrcode.png"
sdm = sendmail(content,mymail,title,file)
sdm.send_mail()
if __name__ == '__main__':
main()
else:
print("sendmail.py was imported!")