from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.image import MIMEImage
from email.utils import parseaddr, formataddr
import smtplib
import os
class Sendemail:
def __init__(self):
self.__sender = ''
self.subject = ''
self.smtp_server = ''
self.recipients = []
self.message = ''
self.Cc = ''
self.msg = MIMEMultipart('alternative')
self.attachment_id = 0
def server(self, smtp_ipaddress, smtp_port=25):
self.smtp_server = smtplib.SMTP(smtp_ipaddress, smtp_port)
def login(self, sender, password):
"""
:param sender: str
:param password: str
:return:
"""
self.__sender = sender
try:
self.smtp_server.login(sender, password)
except Exception as e:
print(e)
@staticmethod
def __format_addr(address):
name, addr = parseaddr(address)
return formataddr((Header(name, 'utf-8').encode(), addr))
def add_image(self, image_path):
with open(image_path, 'rb') as f:
filename = os.path.basename(image_path)
attachment_id = str(self.attachment_id)
att_image = MIMEImage(f.read())
att_image.add_header('Content-ID', '%s' % attachment_id)
html_image = '<br><img src="cid:%s" alt="%s" width="50%%" height="50%%">' % (attachment_id, filename.split('.')[0])
self.msg.attach(att_image)
self.message += html_image
self.attachment_id += 1
def add_attachments(self, file_path):
filename = os.path.basename(file_path)
att = MIMEText(open(file_path, 'rb').read(), 'base64', 'utf-8')
att.add_header("Content-Type", 'application/octet-stream')
att.add_header("Content-Disposition", 'attachment', filename=filename)
att.add_header('X-Attachment-Id', str(self.attachment_id))
self.msg.attach(att)
def sendemail(self):
self.msg['From'] = self.__format_addr(self.__sender)
self.msg['To'] = self.__format_addr(",".join(self.recipients))
self.msg['Cc'] = self.__format_addr(",".join(self.Cc))
self.msg['Subject'] = Header(self.subject, 'utf-8').encode()
self.msg.attach(MIMEText(self.message, 'html', 'utf-8'))
try:
self.smtp_server.sendmail(self.__sender, self.recipients, self.msg.as_string())
self.smtp_server.quit()
except Exception as e:
print(e)
if __name__ == '__main__':
mail = Sendemail()
mail.server('smtp.126.com')
mail.login('[email protected]', 'xxxxxxxx')
mail.subject = '测试邮件'
mail.recipients = ['[email protected]']
mail.Cc = ['[email protected]']
mail.message = '这是一封通过python发送又一个的测试邮件'
mail.add_image(r'C:\Users\gaoyuanzhi\Desktop\aaa.jpg')
mail.add_image(r'C:\Users\gaoyuanzhi\Desktop\bbb.jpg')
mail.add_attachments(r'C:\Users\gaoyuanzhi\Desktop\aaa.jpg')
mail.sendemail()
python3发送邮件的脚本
猜你喜欢
转载自www.cnblogs.com/gaoyuanzhi/p/12643508.html
今日推荐
周排行