-
Notifications
You must be signed in to change notification settings - Fork 870
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Add email provider for integrations
Signed-off-by: Diwank Singh Tomer <[email protected]>
- Loading branch information
Showing
12 changed files
with
367 additions
and
214 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
from pydantic import EmailStr, Field | ||
|
||
from .base_models import ( | ||
BaseArguments, | ||
BaseOutput, | ||
BaseSetup, | ||
) | ||
|
||
|
||
class EmailSetup(BaseSetup): | ||
host: str = Field(..., description="The host of the email server") | ||
port: int = Field(..., description="The port of the email server") | ||
user: str = Field(..., description="The username of the email server") | ||
password: str = Field(..., description="The password of the email server") | ||
|
||
|
||
class EmailArguments(BaseArguments): | ||
to: EmailStr = Field(..., description="The email address to send the email to") | ||
from_: EmailStr = Field(..., alias="from", description="The email address to send the email from") | ||
subject: str = Field(..., description="The subject of the email") | ||
body: str = Field(..., description="The body of the email") | ||
|
||
|
||
class EmailOutput(BaseOutput): | ||
success: bool = Field(..., description="Whether the email was sent successfully") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 change: 1 addition & 0 deletions
1
integrations-service/integrations/utils/integrations/__init__.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
27 changes: 27 additions & 0 deletions
27
integrations-service/integrations/utils/integrations/email.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
from email.message import EmailMessage | ||
from smtplib import SMTP | ||
|
||
from beartype import beartype | ||
|
||
from ...models import EmailArguments, EmailOutput, EmailSetup | ||
|
||
|
||
# @beartype | ||
async def send( | ||
setup: EmailSetup, arguments: EmailArguments | ||
) -> EmailOutput: | ||
""" | ||
Sends an email with the provided details. | ||
""" | ||
|
||
message = EmailMessage() | ||
message.set_content(arguments.body) | ||
message["Subject"] = arguments.subject | ||
message["From"] = arguments.from_ | ||
message["To"] = arguments.to | ||
|
||
with SMTP(setup.host, setup.port) as server: | ||
server.login(setup.user, setup.password) | ||
server.send_message(message) | ||
|
||
return EmailOutput(success=True) |
Oops, something went wrong.