<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rifa Faruqi</title>
    <description>The latest articles on DEV Community by Rifa Faruqi (@riparuk).</description>
    <link>https://dev.to/riparuk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2319557%2Ffea90c1a-5b28-4c2d-8e23-46a687a9670b.jpg</url>
      <title>DEV Community: Rifa Faruqi</title>
      <link>https://dev.to/riparuk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/riparuk"/>
    <language>en</language>
    <item>
      <title>Send Email with Python SMPT and Gmail is Easy!</title>
      <dc:creator>Rifa Faruqi</dc:creator>
      <pubDate>Fri, 01 Nov 2024 10:14:50 +0000</pubDate>
      <link>https://dev.to/riparuk/send-email-with-python-smpt-and-gmail-is-easy-3e64</link>
      <guid>https://dev.to/riparuk/send-email-with-python-smpt-and-gmail-is-easy-3e64</guid>
      <description>&lt;p&gt;send email to someone else is an important thing, in development it can be used to send some code such as OTP, PIN, authentication, etc.&lt;/p&gt;

&lt;p&gt;recently, I got a project that required me to be able to send emails to users for OTP code, and it turned out to be very easy.&lt;/p&gt;

&lt;h2&gt;
  
  
  here is the basics step I did:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Firstly, u need to setup your google account to be able to use for sending email by &lt;strong&gt;Allow 2-step verification&lt;/strong&gt; (if done, skip this step).
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Open your &lt;a href="https://myaccount.google.com/" rel="noopener noreferrer"&gt;Google Account&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;In the navigation panel, select &lt;strong&gt;Security&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Under “How you sign in to Google,” select &lt;strong&gt;2-Step Verification&lt;/strong&gt; and then &lt;strong&gt;Get started&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Follow the on-screen steps.
&lt;a href="https://myaccount.google.com/two-step-verification/phone-numbers" rel="noopener noreferrer"&gt;Turn on 2-step verification&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Secondly, create an app password (16-digit passcode that gives a less secure app or device permission to access your Google Account).
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Make sure 2-step verification is allowed.&lt;/li&gt;
&lt;li&gt;Open &lt;a href="https://myaccount.google.com/apppasswords" rel="noopener noreferrer"&gt;create and manage your app password&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;Add &lt;strong&gt;name&lt;/strong&gt; of the app (whatever u like), and the generated &lt;strong&gt;password&lt;/strong&gt; will apear like this :
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flle1u3tocos24iooitfa.png" alt="Image description" width="490" height="88"&gt;
&lt;/li&gt;
&lt;li&gt;Save the password (it will use later), don't share to anyone yeah.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Lastly, here is the basic code in python that work for me to send email :
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;smtplib&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;email.mime.multipart&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MIMEMultipart&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;email.mime.text&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MIMEText&lt;/span&gt;
&lt;span class="c1"&gt;# creates SMTP session
&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;smtplib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SMTP&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;smtp.gmail.com&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;587&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# start TLS for security
&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;starttls&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="c1"&gt;# Authentication
&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your_email@gmail.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;yyaz pgow khtd xeqn&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="c1"&gt;# Create a multipart message
&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;MIMEMultipart&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;From&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your_email@gmail.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;To&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;send_to_email@gmail.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Subject&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Subject of the Email&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;How are you mate? This is a test email sent using Python&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;# Attach the message body
&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;attach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;MIMEText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;plain&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="c1"&gt;# Send the email
&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# terminating the session
&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;quit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;use the &lt;strong&gt;google account that has been setup&lt;/strong&gt; (2-step verificiation) and &lt;strong&gt;use your email&lt;/strong&gt; and &lt;strong&gt;the app password that has been generated&lt;/strong&gt; as arguments in the s.login() like the code above.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;run it&lt;/strong&gt;, Here's a worked example : &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7p1yjquz89kt9sqt97nk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7p1yjquz89kt9sqt97nk.png" alt="Image description" width="800" height="553"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to ask questions if you face any difficulties :)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/75021886/gmail-smtp-send-535-5-7-8-username-and-password-not-accepted" rel="noopener noreferrer"&gt;https://stackoverflow.com/questions/75021886/gmail-smtp-send-535-5-7-8-username-and-password-not-accepted&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.google.com/accounts/answer/185839?sjid=7869472629511530464-AP" rel="noopener noreferrer"&gt;https://support.google.com/accounts/answer/185839?sjid=7869472629511530464-AP&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.google.com/accounts/answer/185833?hl=en" rel="noopener noreferrer"&gt;https://support.google.com/accounts/answer/185833?hl=en&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>python</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
