Gramex SMTP Email Issue

57 Views Asked by At

I have to send an email from python function to multiple users with dynamic content.

I have given email details in gramex.yaml as below

email:
  barcode-mail-service:
    type: gmail
    email: [email protected]
    password: alphaBetaGamma

In my python function I have implemented mail functionality as below:

def email_users(_pending_users, approval):
    mailer = service.email['barcode-mail-service']
    content = []
    if approval == 'Approved':
        content = [f"Hi {obj['user']},\n\n \
                    Welcome to the Service online portal!"
                    for obj in 
                    _pending_users.to_dict('r')
                  ]
    else:
        content = [f"Hi {obj['user']},\n\n \
                   Your request has been rejected by the approver!"
                   for obj in _pending_users.to_dict('r')
                  ]
    to_list = _pending_users['email'].tolist() #gets list of all email ids
    for index in range(len(to_list)): #loops over each mail id and sends the email
        mailer.mail(
            to=to_list[index],
            subject=f'Barcode User Access {approval}',
            html=content[index]
        )

When I execute the above function I get the following error:

TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

How can I fix this?

1

There are 1 best solutions below

4
On BEST ANSWER

This seems to be a Firewall issue. SMTP internally uses port 25 for sending email. Enable (Allow) port 25 on your system and try if that works. You would need to enable this port on the server as well during deployment.

Note: Check which port is being used for sending the email by your Email Exchange

You can check this link to enable on Windows OS