File size: 1,869 Bytes
5551656
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import os

__all__ = ['SendEmails']

class SendEmails:
    dependencies = ['os']

    inputSchema = {
        "name": "SendEmails",
        "description": "Writes and sends an email.",
        "parameters": {
            "type": "object",
            "properties": {
                "receiver_email": {
                    "type": "string",
                    "description": "The recipient's email address.",
                },
                "subject": {
                    "type": "string",
                    "description": "The email subject.",
                },
                "body": {
                    "type": "string",
                    "description": "The email body.",
                },
            },
            "required": ["receiver_email", "subject", "body"],
        }
    }

    def __init__(self):
        self.sender_email = os.environ.get("EMAIL_ADDRESS")
        self.sender_password = os.environ.get("EMAIL_PASSWORD")

    def run(self, **kwargs):
        receiver_email = kwargs["receiver_email"]
        subject = kwargs["subject"]
        body = kwargs["body"]

        try:
            msg = MIMEMultipart()
            msg['From'] = self.sender_email
            msg['To'] = receiver_email
            msg['Subject'] = subject

            msg.attach(MIMEText(body, 'plain'))

            server = smtplib.SMTP('smtp.gmail.com', 587)
            server.starttls()
            server.login(self.sender_email, self.sender_password)
            text = msg.as_string()
            server.sendmail(self.sender_email, receiver_email, text)
            server.quit()

            return {"status": "success", "message": "Email sent successfully!"}

        except Exception as e:
            return {"status": "error", "message": str(e)}