View difference between Paste ID: mTZSLg1p and TWCPndnR
SHOW: | | - or go back to the newest paste.
1
import smtplib
2
from email.message import EmailMessage
3
from email.message import MIMEPart
4
from email.mime.multipart import MIMEMultipart
5
from base64 import encodebytes
6
import mimetypes
7
8
mSubject = 'Another new family reunion' 
9
mFrom    = 'me@mgmail.com'
10
mTo      = 'mom@yahoo.com'
11
mCC      = 'sis@roadrunner.com'
12
sLogin   = 'me@gmail.com'
13
sPass    = 'mypass'
14
mServer  = "smtp.gmail.com"
15
mPort    = 465
16
17
filename1 = "file1.jpg"
18
filename2 = "file2.jpg"
19
filename3 = "file3.jpg"
20
image_cid1 = filename1 + "@xxxx1"
21
image_cid2 = filename2 + "@xxxx2"
22
23
24
def inline_part(filename, icid):
25
    """ Creates a MIMEMultipart for embedded images """
26
    part = MIMEMultipart('related')
27
28
    fp = open(filename, 'rb')
29
    part.set_payload(encodebytes(fp.read()).decode())
30
    fp.close()
31
    part.add_header('Content-ID', '<' + icid + '>')
32
    part.add_header("Content-Transfer-Encoding", "base64")
33
    return part
34
35
def attach_part(filename):
36
    """ Creates a MIMEPart for attached images """
37
    part = MIMEPart()
38
    fp = open(filename, 'rb')
39
    part.set_payload(encodebytes(fp.read()).decode())
40
    fp.close()
41
42
    part.add_header("Content-Type",  mimetypes.guess_type(filename2)[0] + '; filename="%s"' % filename)
43
    part.add_header("Content-Transfer-Encoding", "base64")
44
    part.add_header('Content-Disposition', 'attachment; filename="%s"' % filename)
45
    return part
46
47
#set up the mime types
48
mimetypes.init()
49
50
# Create the container email message.
51
msg = EmailMessage()
52
53
msg['Subject'] = mSubject
54
msg['From']    = mFrom
55
msg['To']      = mTo
56
msg['Bcc']     = mCC
57
58
body ="""<HTML>
59
  <head></head>
60
  <body>
61
    This is a test email to send an attachment.
62
    This is a linked image:
63-
    <div align="center"><p><img src="http://www.freedigitalphotos.net/images/previews/success-road-sign-10031660.jpg"><br></p><p>&nbsp;</p></div>
63+
    <div align="center"><p><img src="http://www.freedigitalphotos.net/images/previews/success-road-sign-10031660.jpg"><br></p><p> </p></div>
64
    we will try to add two in-line images as well, named file1.jpg and file2.jpg
65
"""
66
# add each of the the in-line photo body info
67
body += '    <p>This is file 1</p>n<p><img id="'+ filename1 + '" src="cid:' + image_cid1 + '" alt="file01.jpg"></p>n'
68
body += '    <p>This is file 2</p>n<p><img id="'+ filename2 + '" src="cid:' + image_cid2 + '" alt="file02.jpg"></p>n'
69
70
#add the rest of the body
71
body +="""    <p>and we have attached one file "file3.jpg"
72
  </body>
73
</HTML>
74
"""
75
76
# add the body to the message
77
msg.add_alternative(body, subtype='html')
78
msg.set_boundary("===myBoundry")
79
# attach the in-line files
80
msg.attach(inline_part(filename1, image_cid1))
81
msg.attach(inline_part(filename2, image_cid2))
82
# attach the attachment file
83
msg.attach(attach_part(filename3))
84
85
# Open a connection to the mail server, log-on, send the message and disconnect
86
try:
87
    server = smtplib.SMTP_SSL(mServer, mPort)
88
    server.set_debuglevel(0)
89
    server.login(sLogin, sPass)
90
    server.send_message(msg)
91
    server.quit()
92
    print ("Message sent Successfully")
93
except Exception as e:
94
    print ("Error sending mail:nt" + str(e))