Sending email with Workmail via Python


I'm trying to send email via Workmail using Python

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase

def send_email(email_recipient, email_subject, email_message):
      server = smtplib.SMTP_SSL('', 465)
      server.login('username', 'password')
      text = msg.as_string()
      server.sendmail(email_sender, email_recipient, text)
      print('Email sent to %s' % email_recipient)
    except Exception as e:
      print("SMTP server connection error")
    return True

def main():
  send_email('', 'hello', 'world')


This does not work because

(535, b'Authentication credentials invalid')
SMTP server connection error

But using username and password, I am able to log into with these credentials.

So my questions are

  1. Is it possible to send an email using the SMTP server of Workmail.
  2. If yes, why are those credentials invalid (I also tried base64)

Many thanks in advance!

  • Hi,

    The username field must be the full email address of the user. This is different from webmail where a username suffices. Hope this helps.

  • Hi @JohnAWS,thanks for your comment ! That does actually solved the issue, I had to send a test email from Workmail to get the email address used! Many thanks! :)

asked a year ago183 views
1 Answer

As mentioned by John (of AWS) above, use full email address for SMTP.

However please note that Workmail shouldnt be use for bulk emails and its primary use case would be Employees of a given company need to email each other on their company email addresses (and to some extent their individual partners).

Check also SES service incase its a better fit.

answered a year ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions