The protocol ~ Simple Mail Transfer Protocol (SMTP) is responsible for managing sending e-mail and routing e-mail between the mail servers.
Python contributes smtplib module that describes an SMTP client session object. SMTPLIB can be offered to send mail to every Internet-savvy machine with an SMTP or ESMTP listener daemon.
Here is a simple syntax to create one SMTP object, which can later be used to send an e-mail-
import smtplib smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
Here is the detail of the parameters-
An SMTP object has an example technique called Sendmail, which is characteristically exercised to do the effort of mailing a message. It seizes three parameters-
Here is a simple way to send one e-mail using Python script. Try it once
#!/usr/bin/python import smtplib sender = 'from@fromdomain.com' receivers = ['to@todomain.com'] message = """From: From Person <from@fromdomain.com> To: To Person <to@todomain.com> Subject: SMTP e-mail test This is a test e-mail message. """ try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, receivers, message) print "Successfully sent email" except SMTPException: print "Error: unable to send email"
Here, you possess or put an essential e-mail in the message, utilizing a triple quote, captivating heed to format the headers properly. An e-mail needs a From, To, and Subject header, divided from the body of the e-mail with a blank line.
To send the mail you exercise smtpObj to hook up to the SMTP server on the local machine. Once it is done, use the Sendmail process along with the message, the from address, and the destination address as parameters (even though the form and to addresses are within the e-mail itself, these aren't always used to route mail).
People installed and running an SMTP server on the local machine can utilize smtplib client to converse with a remote SMTP server. If not you are utilizing a webmail service, your e-mail provider must have share outgoing mail server details with you required for the below-mentioned coding:
smtplib.SMTP('mail.your-domain.com', 25)
When users send a text message adopting Python, then the entire content is accepted as simple text. Even if users incorporate HTML tags in a text message, which can display as easy text and HTML tags will never be formatted as per HTML syntax. However, Python renders an alternative to sending an HTML message according to an actual HTML message.
While sending an e-mail message, you can specify a Mime version, content type, and character set to send an HTML e-mail.
Following is the example to send HTML content as an e-mail. Try it once-
#!/usr/bin/python import smtplib message = """From: From Person <from@fromdomain.com> To: To Person <to@todomain.com> MIME-Version: 1.0 Content-type: text/html Subject: SMTP HTML e-mail test This is an e-mail message to be sent in HTML format <b>This is HTML message.</b> <h1>This is headline.</h1> """ try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, receivers, message) print "Successfully sent email" except SMTPException: print "Error: unable to send email"
To propel an e-mail with varied content needs to set the Content-type header to multipart/mixed. Then, text and attachment sections can be provided within boundaries.
An edge is begun with two hyphens pursued by an inimitable number, which never emerges in the message fraction of the e-mail. The last boundary denoting the e-mail's final part must also end with two hyphens.
The attached files should be encoded with the pack("m") function to have base64 encoding before transmission.
Following is the example, which sends a file /tmp/test.txt as an attachment. Try it once:
#!/usr/bin/python import smtplib import base64 filename = "/tmp/test.txt" # Read a file and encode it into base64 format fo = open(filename, "rb") filecontent = fo.read() encodedcontent = base64.b64encode(filecontent) # base64 sender = 'webmaster@tutorialpoint.com' reciever = 'amrood.admin@gmail.com' marker = "AUNIQUEMARKER" body =""" This is a test email to send an attachement. """ # Define the main headers. part1 = """From: From Person <me@fromdomain.net> To: To Person <amrood.admin@gmail.com> Subject: Sending Attachement MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=%s --%s """ % (marker, marker) # Define the message action part2 = """Content-Type: text/plain Content-Transfer-Encoding:8bit %s --%s """ % (body,marker) # Define the attachment section part3 = """Content-Type: multipart/mixed; name=\"%s\" Content-Transfer-Encoding:base64 Content-Disposition: attachment; filename=%s %s --%s-- """ %(filename, filename, encodedcontent, marker) message = part1 + part2 + part3 try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, reciever, message) print "Successfully sent email" except Exception: print "Error: unable to send email"
Here at Intellinuts, we have created a complete Python tutorial for Beginners to get started in Python.