123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- import smtplib
- import traceback
- import os
- from email.mime.text import MIMEText
- from email.mime.image import MIMEImage
- from email.mime.multipart import MIMEMultipart
- from email.message import EmailMessage
- import codecs
- import jinja2
- import re
- import random as rd
- from personal_settings import *
- def mail2(mailobj):
- gmail_user = mailobj['gmail_user']
- gmail_password = mailobj['gmail_password']
- toaddr = mailobj['toaddr']
- to_text = mailobj['totext']
- to = [toaddr]
- sent_from = gmail_user
-
-
- msg = MIMEMultipart()
- msg['Subject'] = mailobj['title']
- msg['From'] = gmail_user
- msg['To'] = toaddr
- msg.attach(MIMEText(to_text))
- path = './templates/index.html'
- fr=codecs.open(path,'r','utf-8')
- html_=fr.read()
- image_paths=[]
- initial_count = 0
- dir_ = "./templates/images/"
- def sorted_alphanumeric(data):
- convert = lambda text: int(text) if text.isdigit() else text.lower()
- alphanum_key = lambda key: [convert(c) for c in re.split('([0-9]+)', key)]
- return sorted(data, key=alphanum_key)
- image_cate =[]
- for path in sorted_alphanumeric(os.listdir(dir_)):
- image_paths.append(dir_+path)
- image_cate.append(path.split(".")[-1])
- image_cate=set(image_cate)
- body_use=re.findall(r'<body.*?>',html_)[0]
- html_ =re.sub(r'<body.*?>', r"%s<img src='http://www.google-analytics.com/collect?v=1&tid=UA-153100602-5&cid=%d&t=event&ec=email&ea=open&el=%s&cs=newsletter&cm=email&cn=%d&dt=%d'>"%(body_use,rd.randint(1000,9999),toaddr,rd.randint(1000,9999),rd.randint(1000,9999)), html_)
-
-
-
- for j in image_cate:
- dir_2 ="images/image-%s.%s"
- for i in range(len(image_paths)):
- # print(dir_2%(i+1,j))
- html_ = html_.replace(dir_2%(i+1,j), "cid:image%s"%(i+1))
- msgAlternative = MIMEMultipart('alternative')
- msg.attach(msgAlternative)
- content=html_
-
-
- text = MIMEText(content,'html','utf-8')
- counter = 1
- for fp in image_paths:
- fp = open(fp, 'rb')
- msgImage = MIMEImage(fp.read())
- fp.close()
- # Define the image's ID as referenced above
- msgImage.add_header('Content-ID', '<image'+str(counter)+'>')
- msgAlternative.attach(msgImage)
- counter += 1
- msgAlternative.attach(text)
- try:
- server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
- server.ehlo()
- server.login(gmail_user, gmail_password)
- server.sendmail(sent_from, to, msg.as_string())
- server.close()
- print ('Email sent!')
- except:
- traceback.print_exc()
- print ('Something went wrong...')
- if __name__ == "__main__":
- mailobj={}
- mailobj['toaddr']=gmail_toaddr
- mailobj['gmail_user']=gmail_user
- mailobj['gmail_password']=gmail_password
- mailobj['title'] = gmail_title
- mailobj['totext'] = gmail_totext
- mail2(mailobj)
|