Python-发邮件框架【带图片和附件】
普通发件框架
#!/usr/bin/env python
# -*- coding:utf-8 –*-
import smtplib
from email.mime.text import MIMEText
def sender_mail(content):
mail_host = 'mail.zjt.com'
mail_user = 'zhoujt' # 发件邮箱前缀
mail_pass = 'password'
sender = 'zhoujt1022@zjt.com' # 发件邮箱
receivers = ['xiaobuivr@126.com'] # 收件人
message = MIMEText(content, 'plain', 'utf-8')
message['Subject'] = '小布测试发件'
message['From'] = sender
message['To'] = receivers[0]
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25) # 端口加密
smtpObj.login(mail_user, mail_pass)
smtpObj.sendmail(
sender, receivers, message.as_string())
smtpObj.quit()
print('success')
except smtplib.SMTPException as e:
print('error', e)
if __name__ == '__main__':
info = 'test send mail'
sender_mail(content=info)
带附件框架
#!/usr/bin/env python
# -*- coding:utf-8 –*-
import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.header import Header
class Mail(object):
def __init__(self, host, nickname, username, password, postfix):
self.host = host # 邮箱地址 mail.163.com
self.nickname = nickname # 邮件标题
self.username = username # 邮箱名
self.password = password # 邮箱密码/授权码
self.postfix = postfix # 邮箱后缀
def send_mail(self, to_list, subject, content, cc_list=[], encode='gbk', is_html=True, images=[]):
me = str(Header(self.nickname, encode)) + "<" + self.username + "@" + self.postfix + ">"
msg = MIMEMultipart()
msg['Subject'] = Header(subject, encode)
msg['From'] = me
msg['To'] = ','.join(to_list)
msg['Cc'] = ','.join(cc_list)
if is_html:
mail_msg = ''
for i in range(len(images)):
mail_msg += '<p><img src="cid:image%d" height="240" width="320"></p>' % (i + 1)
msg.attach(MIMEText(content + mail_msg, 'html', 'utf-8'))
for i, img_name in enumerate(images):
with open(img_name, 'rb') as fp:
img_data = fp.read()
msg_image = MIMEImage(img_data)
msg_image.add_header('Content-ID', '<image%d>' % (i + 1))
msg.attach(msg_image)
# 将图片作为附件
image = MIMEImage(img_data, _subtype='octet-stream')
image.add_header('Content-Disposition', 'attachment', filename=images[i])
msg.attach(image)
else:
msg_content = MIMEText(content, 'plain', encode)
msg.attach(msg_content)
try:
s = smtplib.SMTP()
# s.set_debuglevel(1)
s.connect(self.host, 666)
s.login(self.username, self.password)
s.sendmail(me, to_list + cc_list, msg.as_string())
s.quit()
s.close()
return True
except Exception as e:
print(e)
return False
def send_mail(to_list, title, content, cc_list=[], encode='utf-8', is_html=True, images=[]):
content = '<pre>%s</pre>' % content
nickname = '发件人姓名'
email = 'zhoujt'
password = 'yourpasswd'
m = Mail('mail.zjt.com', nickname, email, password, 'zjt.com')
m.send_mail(to_list, title, content, cc_list, encode, is_html, images)
if __name__ == '__main__':
images = [
't_image/docker-k8s.png',
't_image/kubernetes.png'
]
import time
title = '发送图片 %s' % time.strftime('%H:%M:%S')
# content = 'this is attach images %s' % time.time()
content = '新增图片'
try:
send_mail(['zhoujt@zjt.com'], title, content, [], 'utf-8', True, images)
# 收件人zhoujt 标题title 内容content 抄送[] 字符 网页版=True 发送图片
print('successful')
except smtplib.SMTPException as e:
print('error\n', e)

浙公网安备 33010602011771号