File size: 3,821 Bytes
211843b
 
 
 
 
 
 
 
 
1d6de29
211843b
 
 
 
1d6de29
211843b
 
 
 
1d6de29
211843b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import smtplib, ssl
from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText


class RaspEmail:
    @staticmethod
    def send(email,subject,message,attachment=None):
        sender_email = "[email protected]"
        message = MIMEMultipart("alternative")
        message["Subject"] = subject
        message["From"] = sender_email
        message["To"] = email
        password = "ktqgjfzgcbfacsve"


        # Turn these into plain/html MIMEText objects
        part1 = MIMEText(message, "html")

        # Add HTML/plain-text parts to MIMEMultipart message.
        # The email client will try to render the last part first

        message.attach(part1)
        # files should be a dictionary of filenames & base64 content
        #print(attachment)
        if attachment != None:
            for file in attachment:
                for key,val in file.items():
                    if ".png" in key:
                        part2 = MIMEBase('image', 'png')
                        image = val.replace("data:image/png;base64,","")
                        part2.set_payload(image)
                        part2.add_header('Content-Transfer-Encoding', 'base64')
                        part2['Content-Disposition'] = 'attachment; filename="%s"' % key
                        message.attach(part2)
                    elif ".jpg" in key or "jpeg" in key:
                        part2 = MIMEBase('image', 'jpeg')
                        image = val.replace("data:image/jpeg;base64,","")
                        part2.set_payload(image)
                        part2.add_header('Content-Transfer-Encoding', 'base64')
                        part2['Content-Disposition'] = 'attachment; filename="%s"' % key
                        message.attach(part2)

            

        # Create secure connection with server and send email
        context = ssl.create_default_context()
        with smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context) as server:
            server.login(sender_email, password)
            server.sendmail(
                sender_email, receiver_email, message.as_string()
            )
    @staticmethod
    def send_attachment(receiver_email,subject,filename,htmlmessage):
        sender_email = "[email protected]"
        password = "ktqgjfzgcbfacsve"

        # Create a multipart message and set headers
        message = MIMEMultipart()
        message["From"] = sender_email
        message["To"] = receiver_email
        message["Subject"] = subject
        message["Bcc"] = receiver_email  # Recommended for mass emails
        
        part1 = MIMEText(htmlmessage, "html")
        # Add body to email
        message.attach(part1)

        # Open PDF file in binary mode
        with open(filename, "rb") as attachment:
            # Add file as application/octet-stream
            # Email client can usually download this automatically as attachment
            part = MIMEBase("application", "octet-stream")
            part.set_payload(attachment.read())

        # Encode file in ASCII characters to send by email    
        encoders.encode_base64(part)

        # Add header as key/value pair to attachment part
        part.add_header(
            "Content-Disposition",
            f"attachment; filename= {filename}",
        )

        # Add attachment to message and convert message to string
        message.attach(part)
        text = message.as_string()

        # Log in to server using secure context and send email
        context = ssl.create_default_context()
        with smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context) as server:
            server.login(sender_email, password)
            server.sendmail(sender_email, receiver_email, text)