<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ramraje.com &#187; smtplib</title>
	<atom:link href="http://www.ramraje.com/tag/smtplib/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ramraje.com</link>
	<description>Software Programming Blog</description>
	<lastBuildDate>Mon, 19 Dec 2011 08:56:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Solution for Python smtplib.SMTPServerDisconnected error</title>
		<link>http://www.ramraje.com/programming/python/how-i-solved-python-smtplibsmtpserverdisconnected/</link>
		<comments>http://www.ramraje.com/programming/python/how-i-solved-python-smtplibsmtpserverdisconnected/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 10:42:04 +0000</pubDate>
		<dc:creator>Ramraj Edagutti</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[smtplib]]></category>
		<category><![CDATA[SMTPServerDisconnected]]></category>

		<guid isPermaLink="false">http://www.ramraje.com/?p=154</guid>
		<description><![CDATA[Since from two  months I have been working on  developing python application to automate the web importer task for our web application, and after completing import job an email needs to  be sent to support team with the importer status.<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.ramraje.com/programming/python/how-i-solved-python-smtplibsmtpserverdisconnected/' addthis:title='Solution for Python smtplib.SMTPServerDisconnected error '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p>Since from two  months I have been working on  developing python application to automate the web importer task for our web application, and after completing import job an email needs to  be sent to support team with the importer status.<span id="more-154"></span></p>
<p>So, while sending email using python smtplib library, I was getting smtplib.SMTPServerDisconnected error. It was working absolutely well before, I was wondering why the SMTPServerDisconnected error was coming now&#8230;</p>
<p>Error log</p>
<div class="geshi no python">
<div class="head">Traceback (most recent call last):</div>
<ol>
<li class="li1">
<div class="de1">File <span class="st0">&quot;ImporterAutomation.py&quot;</span>, line <span class="nu0">470</span>, <span class="kw1">in</span> <span class="sy0">&amp;</span>lt<span class="sy0">;</span>module<span class="sy0">&amp;</span>gt<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">sys</span>.<span class="me1">exit</span><span class="br0">&#40;</span>main<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">File <span class="st0">&quot;ImporterAutomation.py&quot;</span>, line <span class="nu0">462</span>, <span class="kw1">in</span> main</div>
</li>
<li class="li1">
<div class="de1">sendmail.<span class="me1">sendEmail</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">File <span class="st0">&quot;C:projects&#8230;sendmail.py&quot;</span>, line <span class="nu0">83</span>, <span class="kw1">in</span> sendEmail</div>
</li>
<li class="li1">
<div class="de1">emailNotify<span class="br0">&#40;</span>TEXT,Flag<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">File <span class="st0">&quot;C:projects&#8230;.sendmail.py&quot;</span>, line <span class="nu0">101</span>, <span class="kw1">in</span> emailNotify</div>
</li>
<li class="li1">
<div class="de1">server.<span class="me1">sendmail</span><span class="br0">&#40;</span>author, recipient_list, msg.<span class="me1">as_string</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">File <span class="st0">&quot;C:Python26libsmtplib.py&quot;</span>, line <span class="nu0">685</span>, <span class="kw1">in</span> sendmail</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">self</span>.<span class="me1">ehlo_or_helo_if_needed</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">File <span class="st0">&quot;C:Python26libsmtplib.py&quot;</span>, line <span class="nu0">509</span>, <span class="kw1">in</span> ehlo_or_helo_if_needed</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="kw1">not</span> <span class="br0">&#40;</span><span class="nu0">200</span> <span class="sy0">&amp;</span>lt<span class="sy0">;</span>= <span class="kw2">self</span>.<span class="me1">ehlo</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> <span class="sy0">&amp;</span>lt<span class="sy0">;</span>= <span class="nu0">299</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">File <span class="st0">&quot;C:Python26libsmtplib.py&quot;</span>, line <span class="nu0">382</span>, <span class="kw1">in</span> ehlo</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">self</span>.<span class="me1">putcmd</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">ehlo_msg</span>, name <span class="kw1">or</span> <span class="kw2">self</span>.<span class="me1">local_hostname</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">File <span class="st0">&quot;C:Python26libsmtplib.py&quot;</span>, line <span class="nu0">318</span>, <span class="kw1">in</span> putcmd</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">self</span>.<span class="me1">send</span><span class="br0">&#40;</span><span class="kw2">str</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">File <span class="st0">&quot;C:Python26libsmtplib.py&quot;</span>, line <span class="nu0">310</span>, <span class="kw1">in</span> send</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">raise</span> SMTPServerDisconnected<span class="br0">&#40;</span><span class="st0">&#39;please run connect() first&#39;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">smtplib</span>.<span class="me1">SMTPServerDisconnected</span>: please run connect<span class="br0">&#40;</span><span class="br0">&#41;</span> first</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">Then after some <span class="kw3">time</span> I figured out it was problem with configuring SMTP host ip address. <span class="me1">There</span> was no smtp host configured <span class="kw1">in</span> configuration <span class="kw2">file</span>.</div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;</span>blockquote<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">smtp = <span class="kw3">smtplib</span>.<span class="me1">SMTP</span><span class="br0">&#40;</span>smtp_host<span class="br0">&#41;</span> &#8212; here smtp_host was null<span class="sy0">&lt;</span>/blockquote<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
<p>Above smtp instance variable is created without SMTP connection, so when I was calling smtp.sendmail() method python smtp lib was throwing that error.</p>
<p>To fix it,  I provided correct SMTP host/ip address, and also added error handling code to gracefully handle that error condition and log error message in log file.</p>
<p>Below is the fix</p>
<div class="geshi no python">
<div class="head">try:</div>
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; smtp = <span class="kw3">smtplib</span>.<span class="me1">SMTP</span><span class="br0">&#40;</span>smtp_host<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> smtp_username <span class="kw1">and</span> smtp_password:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;smtp .<span class="me1">login</span><span class="br0">&#40;</span>smtp_username, smtp_password<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; smtp .<span class="me1">sendmail</span><span class="br0">&#40;</span>author, recipient_list, msg.<span class="me1">as_string</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">except</span> <span class="kw3">smtplib</span>.<span class="me1">SMTPException</span>, e:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; err_log.<span class="me1">error</span><span class="br0">&#40;</span><span class="st0">&#39;Error while seding email summary&#8230;.&#39;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; err_log.<span class="me1">error</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">except</span> <span class="kw3">socket</span>.<span class="me1">error</span>, e:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; err_log.<span class="me1">error</span><span class="br0">&#40;</span><span class="st0">&#39;Unable to connect to SMTP server&#8230;.&#39;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; err_log.<span class="me1">error</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">else</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; smtp .<span class="me1">quit</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>I know this very basic part of python smtp module, hope this may help python freshers. Any comments or feedback are welcome.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.ramraje.com/programming/python/how-i-solved-python-smtplibsmtpserverdisconnected/' addthis:title='Solution for Python smtplib.SMTPServerDisconnected error '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.ramraje.com/programming/python/how-i-solved-python-smtplibsmtpserverdisconnected/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

