diff --git a/app/api/schemas/profile_links.py b/app/api/schemas/profile_links.py index 64230d5..709a27c 100644 --- a/app/api/schemas/profile_links.py +++ b/app/api/schemas/profile_links.py @@ -3,4 +3,4 @@ from marshmallow import Schema, fields class ProfileLinksSchema(Schema): token = fields.Str(required=True) uid = fields.Str(required=True) - url_list = fields.Str( required=False) \ No newline at end of file + # url_list = fields.Str( required=False) \ No newline at end of file diff --git a/app/api/services/account.py b/app/api/services/account.py index 8557717..1df5490 100644 --- a/app/api/services/account.py +++ b/app/api/services/account.py @@ -28,6 +28,9 @@ import random from app.config import Config +import smtplib, ssl +from email.message import EmailMessage + class AccountService(BaseService): JWT_SECRET_KEY = Config.JWT_SECRET_KEY @@ -562,43 +565,53 @@ class AccountService(BaseService): try: with db.session.begin(): + url_list = data["url_list"] + data.pop("url_list") + validated_data = AccountService.validate_data(data, ProfileLinksSchema()) user_token = validated_data.get('token') uid = str(validated_data.get('uid')) - url_list = str(validated_data.get('url_list')) member_data = Members.get_member_by_uid(uid) if member_data: - firstname = str(validated_data.get('firstname')) - lastname = str(validated_data.get('lastname')) - account_name = str(validated_data.get('account_name')) - phone = str(validated_data.get('phone')) - full_address = str(validated_data.get('full_address')) - # email = str(validated_data.get('email')) - profile_data = { - "firstname": firstname, - "lastname": lastname, - "account_name": account_name, - "phone": phone, - "full_address": full_address, - # "email": email, - } - Members.set_member_update_profile(uid, profile_data) - # Read the saved data - member_data = Members.get_member_by_uid(uid) - personal_data = { - "firstname": member_data.firstname, - "lastname": member_data.lastname, - "account_name": member_data.account_name, - "email": member_data.email, - "phone": member_data.phone, - "full_address": member_data.full_address, - "country": member_data.country, - } + for key in url_list.keys(): + url_list_value = url_list[key] + + logger.info(f"URL LIST : {key} : {url_list_value}") + + + # + # firstname = str(validated_data.get('firstname')) + # lastname = str(validated_data.get('lastname')) + # account_name = str(validated_data.get('account_name')) + # phone = str(validated_data.get('phone')) + # full_address = str(validated_data.get('full_address')) + # # email = str(validated_data.get('email')) + # profile_data = { + # "firstname": firstname, + # "lastname": lastname, + # "account_name": account_name, + # "phone": phone, + # "full_address": full_address, + # # "email": email, + # } + # Members.set_member_update_profile(uid, profile_data) + + # # Read the saved data + # member_data = Members.get_member_by_uid(uid) + # personal_data = { + # "firstname": member_data.firstname, + # "lastname": member_data.lastname, + # "account_name": member_data.account_name, + # "email": member_data.email, + # "phone": member_data.phone, + # "full_address": member_data.full_address, + # "country": member_data.country, + # } external_links = { - "facebook_url": "facebook.com", + "facebook_url": "https://facebook.com", "twitter_url": "twitter.com", "blogger_url": "blogger.com", "google_url": "google.com", @@ -607,7 +620,6 @@ class AccountService(BaseService): } profile_data = { - "personal_data": personal_data, "external_links": external_links, } @@ -633,9 +645,69 @@ class AccountService(BaseService): @staticmethod def process_test_email(data): logger.info(f"Email Test Enter", exc_info=True) + AccountService.test_new_mailer() AccountService.send_register_mail('ameye@chiefsoft.com', 'pend-uid---', 100, 'olutest', 'Ameyetest') logger.info(f"Email Test", exc_info=True) + @staticmethod + def test_new_mailer(): + 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 = "ijcl pyko pswl phra" + app_password55 = "ijclpykopswlphra" + + # --- Create the Email Message --- + msg = EmailMessage() + msg.set_content("This is the body of the email sent from Python.") + 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.gmail.com" + port = 465 # For SSL + port = 587 # For non SSL + + # Create a secure SSL context + # context = ssl.create_default_context() + logger.info("test_new_mailer 003 ") + try: + 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: + # server.starttls() + 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!") + + # 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: + 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): pending_member = {