tarfile = 'xxx.tar.gz'
attachfile = MIMEApplication(open(tarfile, 'rb').read())
print('Attach: ' + os.path.basename(tarfile))
attachfile.add_header(
'Content-Disposition',
'attachment',
filename=os.path.basename(tarfile)
)
msg.attach(attachfile)
import sys
import os
import re
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.header import Header
mailhost = 'smtp.your_server.com'
mailport = 465
mailuser = 'me@exasic.cn'
mailpass = 'your_password'
mailfrom = 'me@exasic.com'
def sendmail(mailto, subject, body, tarfiles=[], cc=[]):
msg = MIMEMultipart()
msg['From'] = mailfrom
print('From: ' + msg['From'])
msg['To'] = ','.join(mailto)
print('To: ' + msg['To'])
if len(cc) != 0:
msg['Cc'] = ','.join(cc)
print('Cc: ' + msg['Cc'])
msg['Subject'] = subject
print('Subject: ' + msg['Subject'])
msg.attach(MIMEText(body, 'plain'))
print('Body: ...')
for tarfile in tarfiles:
attachfile = MIMEApplication(open(tarfile, 'rb').read())
print('Attach: ' + os.path.basename(tarfile))
attachfile.add_header(
'Content-Disposition',
'attachment',
filename=os.path.basename(tarfile)
)
m = re.search(r'(\..*)$', tarfile)
if m:
fileext = m.group(1)
if fileext in ['.tar.gz', '.tgz', '.gz']:
attachfile.add_header('Content-Type', 'application/gzip')
elif fileext in ['.tar']:
attachfile.add_header('Content-Type', 'application/x-tar')
elif fileext in ['.zip']:
attachfile.add_header('Content-Type', 'application/zip')
elif fileext in ['.pdf']:
attachfile.add_header('Content-Type', 'application/pdf')
msg.attach(attachfile)
try:
mailserver = smtplib.SMTP_SSL(host=mailhost, port=mailport)
mailserver.ehlo()
mailserver.login(mailuser, mailpass)
mailserver.sendmail(mailfrom, mailto, msg.as_string())
mailserver.quit()
print('Done!')
except Exception as e:
print(e)
if __name__ == '__main__':
mailto = []
mailto.append('to@exasic.com')
cc = []
cc.append('cc@exasic.com')
subject = 'This is a test mail'
tarfiles = []
tarfiles.append('xxx.tar.gz')
tarfiles.append('yyy.pdf')
textbody = f'''
Dear friend,
How are you?
regards,
Me
'''
sendmail(mailto, subject, textbody, tarfiles, cc)