Search code examples
pythonemailsmtpsmtplib

Unable to send mail using smtplib in python


I am running the below code in Ubuntu OS. When I run this code in stand alone machine, I am not getting any error. But when I connect the remote machine and run the same code, I am getting the following error message. I have also modified the port value and try multiple times but the issue is not fixing. I am wondering where i need to check to resolve the issue.

import smtplib
message = ' '
sender  = ' '
receivers = ' '
SUBJECT  = ' '
TEXT     = ' '
sender = 'sender1@abc.com'
receivers = ['rec1@abc.com','rec2@abc.com']

# prepare message
SUBJECT = "Test mail "
TEXT    = """Message line1 \n
             Message line2 \n  """

message  = 'Subject: {}\n\n{}'.format(SUBJECT, TEXT)

try:
    smtpObj = smtplib.SMTP(<Value>)
    smtpObj.sendmail(sender, receivers, message)
    smtpObj.close()

except smtplib.SMTPConnectError:
       print "Error: unable to send email"

except smtplib.SMTPException:
       print "Error: unable to send email"

Error message:

Traceback (most recent call last):
  File "sampa.py", line 23, in <module>
    smtpObj = smtplib.SMTP(<Value>)
  File "/usr/lib/python2.7/smtplib.py", line 256, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python2.7/smtplib.py", line 316, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python2.7/smtplib.py", line 291, in _get_socket
    return socket.create_connection((host, port), timeout)
  File "/usr/lib/python2.7/socket.py", line 571, in create_connection
    raise err
socket.error: [Errno 111] Connection refused

Solution

  • try:
        smtpObj = smtplib.SMTP(smtp_server, port)
        smtpObj.ehlo()  # Can be omitted
        smtpObj.starttls(context=context)  # Secure the connection
        smtpObj.ehlo()  # Can be omitted
        smtpObj.login(sender, password)
        smtpObj.sendmail(sender, receivers, email_text)