Added AWS SES email

This commit is contained in:
2026-04-25 16:11:27 -04:00
parent 5f4a9112c3
commit 98c1b1fa75
6 changed files with 125 additions and 28 deletions
+6 -1
View File
@@ -32,6 +32,8 @@ SIMBRELLA_API_KEY="testtest-api-key-12345"
# support@mermsemr.com # support@mermsemr.com
# F7f220a7f.may12002! # F7f220a7f.may12002!
# twillo recovery - BPR7DMFHP53D919YWYWB6R5F
MAIL_SERVER=smtp.gmail.com MAIL_SERVER=smtp.gmail.com
MAIL_PORT= 465 MAIL_PORT= 465
MAIL_USERNAME=message@chiefsoft.com MAIL_USERNAME=message@chiefsoft.com
@@ -59,4 +61,7 @@ STRIPE_CANCEL_URL="https://qa-panel.mermsemr.com/subscription"
# UPLOAD PATHS # UPLOAD PATHS
UPLOAD_FOLDER="/app/uploads/DEV" UPLOAD_FOLDER="/app/uploads/DEV"
MEDIA_SERVER="https://qa-media.mermsemr.com" MEDIA_SERVER="https://qa-media.mermsemr.com"
AWS_ACCESS_KEY_ID=AKIAZAI4GVFJEGM4JHET
AWS_SECRET_ACCESS_KEY=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
+2
View File
@@ -59,3 +59,5 @@ STRIPE_CANCEL_URL="https://panel.mermsemr.com/subscription"
UPLOAD_FOLDER="/app/uploads/LIVE" UPLOAD_FOLDER="/app/uploads/LIVE"
MEDIA_SERVER="https://media.mermsemr.com" MEDIA_SERVER="https://media.mermsemr.com"
AWS_ACCESS_KEY_ID=AKIAZAI4GVFJEGM4JHET
AWS_SECRET_ACCESS_KEY=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
+4 -1
View File
@@ -60,4 +60,7 @@ START_URL_PATTERN =".devprov.mermsemr.com"
# UPLOAD PATHS # UPLOAD PATHS
UPLOAD_FOLDER="/app/uploads/DEV" UPLOAD_FOLDER="/app/uploads/DEV"
MEDIA_SERVER="https://qa-media.mermsemr.com" MEDIA_SERVER="https://qa-media.mermsemr.com"
AWS_ACCESS_KEY_ID=AKIAZAI4GVFJEGM4JHET
AWS_SECRET_ACCESS_KEY=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
+106 -25
View File
@@ -22,6 +22,9 @@ import smtplib
from email.mime.text import MIMEText from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart from email.mime.multipart import MIMEMultipart
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail
import datetime import datetime
import jwt import jwt
import random import random
@@ -31,6 +34,9 @@ from app.config import Config
import smtplib, ssl import smtplib, ssl
from email.message import EmailMessage from email.message import EmailMessage
from app.notifications.aws.aws_mailer import send_email_ses
class AccountService(BaseService): class AccountService(BaseService):
JWT_SECRET_KEY = Config.JWT_SECRET_KEY JWT_SECRET_KEY = Config.JWT_SECRET_KEY
@@ -644,59 +650,55 @@ class AccountService(BaseService):
@staticmethod @staticmethod
def process_test_email(data): def process_test_email(data):
logger.info(f"Email Test Enter", exc_info=True) logger.info(f"Email Test Enter 001", exc_info=True)
AccountService.test_new_mailer() send_email_ses(
AccountService.send_register_mail('ameye@chiefsoft.com', 'pend-uid---', 100, 'olutest', 'Ameyetest') to_email="ameye@chiefsoft.com",
subject="Test from Merms",
html_content="<strong>Hello from AWS SES</strong>"
)
# AccountService.test_new_mailer()
# AccountService.send_register_mail('ameye@chiefsoft.com', 'pend-uid---', 100, 'olutest', 'Ameyetest')
logger.info(f"Email Test", exc_info=True) logger.info(f"Email Test", exc_info=True)
@staticmethod @staticmethod
def test_new_mailer(): def test_new_mailer_old():
logger.info("test_new_mailer 000 ") logger.info("test_new_mailer 000 ")
# --- Email Configuration --- # --- Email Configuration ---
sender_email = "support@mermsemr.com" # Enter your email address sender_email = "support@mermsemr.com" # Enter your email address
receiver_email = "ameye@chiefsoft.com" # Enter the recipient's address receiver_email = "ameye@chiefsoft.com" # Enter the recipient's address
# Use the App Password generated in Step 1 # Use the App Password generated in Step 1
app_password = "ijcl pyko pswl phra" app_password = "flhf cjjx bguv fycg"
app_password55 = "ijclpykopswlphra" app_password = "flhfcjjxbguvfycg"
# --- Create the Email Message --- # --- Create the Email Message ---
msg = EmailMessage() # msg = EmailMessage()
msg.set_content("This is the body of the email sent from Python.") # msg.set_content("This is the body of the email sent from Python.")
msg = MIMEText("This is the body of my email.")
msg['Subject'] = "Subject Line from Python" msg['Subject'] = "Subject Line from Python"
msg['From'] = sender_email msg['From'] = sender_email
msg['To'] = receiver_email msg['To'] = receiver_email
# --- Connect to Gmail's SMTP Server and Send the Email --- # --- Connect to Gmail's SMTP Server and Send the Email ---
smtp_server = "smtp.gmail.com" smtp_server = "smtp.gmail.com"
port = 465 # For SSL port = 587 # STARTTLS
port = 587 # For non SSL
# Create a secure SSL context context = ssl.create_default_context()
# context = ssl.create_default_context()
logger.info("test_new_mailer 003 ") logger.info("test_new_mailer 003 ")
try: try:
logger.info("test_new_mailer 000 44") logger.info("test_new_mailer 000 44")
# with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
with smtplib.SMTP(smtp_server, port) as server: with smtplib.SMTP(smtp_server, port) as server:
# server.starttls() logger.info("test_new_mailer 000 44-1")
server.ehlo()
logger.info("test_new_mailer 000 44-2")
server.starttls(context=context)
server.ehlo()
logger.info("test_new_mailer 000 55") logger.info("test_new_mailer 000 55")
server.login(sender_email, app_password) server.login(sender_email, app_password)
logger.info("test_new_mailer 000 66") logger.info("test_new_mailer 000 66")
server.send_message(msg) server.send_message(msg)
logger.info("test_new_mailer 000 77") logger.info("test_new_mailer 000 77")
logger.info("Email sent successfully!") logger.info("Email sent successfully!")
# msg = EmailMessage()
# msg.set_content("This is the body of the email.")
# msg['Subject'] = "Test Subject"
# msg['From'] = "sender@example.com"
# msg['To'] = "recipient@example.com"
#
# server.send_message(msg)
# print("Email sent successfully!")
except smtplib.SMTPAuthenticationError: except smtplib.SMTPAuthenticationError:
logger.error("Authentication error: Check your username and password.") logger.error("Authentication error: Check your username and password.")
@@ -708,6 +710,85 @@ class AccountService(BaseService):
logger.error(f"An unrelated error occurred: {e}") logger.error(f"An unrelated error occurred: {e}")
@staticmethod
def test_new_mailer():
# Replace these with your actual details
SENDGRID_API_KEY = "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"
FROM_EMAIL = 'support@mermsemr.com' # Must be a verified sender in SendGrid
TO_EMAIL = 'works@chiefsoft.com'
message = Mail(
from_email=FROM_EMAIL,
to_emails=TO_EMAIL,
subject='Sending with Twilio SendGrid is Fun',
html_content='<strong>and easy to do anywhere, even with Python</strong>'
)
try:
# Initialize the SendGrid client
sg = SendGridAPIClient(SENDGRID_API_KEY)
# Send the email
response = sg.send(message)
# Print status codes: 202 means the request was accepted for delivery
print(f"Status Code: {response.status_code}")
print(f"Body: {response.body}")
print(f"Headers: {response.headers}")
except Exception as e:
logger.error(f"An unrelated error occurred: {e}")
# logger.info("test_new_mailer 000 ")
# # --- Email Configuration ---
# sender_email = "support@mermsemr.com" # Enter your email address
# receiver_email = "ameye@chiefsoft.com" # Enter the recipient's address
# # Use the App Password generated in Step 1
# app_password = "flhf cjjx bguv fycg"
# app_password = "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"
#
# # --- Create the Email Message ---
# # msg = EmailMessage()
# # msg.set_content("This is the body of the email sent from Python.")
# msg = MIMEText("This is the body of my email.")
# msg['Subject'] = "Subject Line from Python"
# msg['From'] = sender_email
# msg['To'] = receiver_email
#
# # --- Connect to Gmail's SMTP Server and Send the Email ---
# smtp_server = "smtp.sendgrid.net"
# port = 587 # STARTTLS
#
# context = ssl.create_default_context()
# logger.info("test_new_mailer 003 ")
# try:
# logger.info("test_new_mailer 000 44")
# with smtplib.SMTP(smtp_server, port) as server:
# logger.info("test_new_mailer 000 44-1")
# server.ehlo()
# logger.info("test_new_mailer 000 44-2")
# server.starttls(context=context)
# server.ehlo()
# logger.info("test_new_mailer 000 55")
# server.login(sender_email, app_password)
# logger.info("test_new_mailer 000 66")
# server.send_message(msg)
# logger.info("test_new_mailer 000 77")
# logger.info("Email sent successfully!")
#
# except smtplib.SMTPAuthenticationError:
# logger.error("Authentication error: Check your username and password.")
#
# except smtplib.SMTPConnectError as e:
# logger.error(f"Connection error: {e}")
# except smtplib.SMTPException as e:
# logger.error(f"An unexpected SMTP error occurred: {e}")
# except Exception as e:
# logger.error(f"An unrelated error occurred: {e}")
def send_register_mail(signup_email, pending_uid, pending_id, firstname, lastname): def send_register_mail(signup_email, pending_uid, pending_id, firstname, lastname):
pending_member = { pending_member = {
+2
View File
@@ -7,6 +7,8 @@ services:
ports: ports:
- "${APP_PORT:-14700}:5000" - "${APP_PORT:-14700}:5000"
environment: environment:
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
- FLASK_APP=${FLASK_APP} - FLASK_APP=${FLASK_APP}
- FLASK_ENV=${FLASK_ENV} - FLASK_ENV=${FLASK_ENV}
- DATABASE_URL=postgresql+psycopg2://${DATABASE_USER}:${DATABASE_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME} - DATABASE_URL=postgresql+psycopg2://${DATABASE_USER}:${DATABASE_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME}
+5 -1
View File
@@ -49,4 +49,8 @@ requests
openai openai
redis redis
sendgrid
boto3