A
ashish makani
Hi c.l.p peeps
I am stuck with an issue, so am coming to the Pythonista deltaforce who rescue me everytime
I am trying to send out email programmatically, from a gmail a/c, using smtplib, using the following chunk of code (b/w [ & ] below)
[
import smtplib
from email.mime.text import MIMEText
#uname, pwd are username & password of gmail a/c i am trying to send from
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls() # get response(220, '2.0.0 Ready to start TLS')
server.login(uname,pwd) # get response(235, '2.7.0 Accepted')
toaddrs = ['(e-mail address removed)', '(e-mail address removed)' ] # list of To email addresses
msg = MIMEText('email body')
msg['Subject'] = 'email subject'
server.sendmail(fromaddr, toaddrs, msg.as_string())
]
The code above works perfectly fine on my local machine, but fails on the production server at the university where i work( all ports other than port 80 are blocked)
So , when i try to run the 2 py statements (in bold below) on a python prompt from the production server, which has port 587 blocked, i get the following error
{Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/smtplib.py", line 239, in __init__
(code, msg) = self.connect(host, port)
File "/usr/lib/python2.6/smtplib.py", line 295, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/lib/python2.6/smtplib.py", line 273, in _get_socket
return socket.create_connection((port, host), timeout)
File "/usr/lib/python2.6/socket.py", line 514, in create_connection
raise error, msg
socket.error: [Errno 101] Network is unreachable
}
1. How can i overcome this ?
A friend suggested , that i could use something called smtp relay, which would solve my problem, but would be time-consuming & a pain to set up.
I did some cursory googling & searching on stackoverflow but could not findany good, well explained results.
I dont know anything about SMTP.
Anybody has any recommendations on a good explanation on smtp relay & how to set it up for sending email from a gmail a/c using a python script ?
2. Also, is there a more elegant/cleaner/graceful solution to my problem than using an smtp relay ?
Any & all explanations/links/code snippets/thoughts/ideas/suggestions/feedback/comments/wisdom of the c.l.p community would be greatly appreciated.
Thanks a ton
cheers
ashish
email :
ashish.makani
domain:gmail.com
p.s. some more context so people dont presume we are spammers
These emails are automated diagnostic emails sent to a group of a few of usadmins, so we get notified when a python heartbeat script, detects a failure in things like n/w connectivity, router status, etc.
All of us dont use university email, we use gmail .
“The only way to do great work is to love what you do. If you haven’t found it yet, keep looking. Don’t settle. As with all matters of the heart, you’ll know when you find it.” - Steve Jobs (1955 - 2011)
I am stuck with an issue, so am coming to the Pythonista deltaforce who rescue me everytime
I am trying to send out email programmatically, from a gmail a/c, using smtplib, using the following chunk of code (b/w [ & ] below)
[
import smtplib
from email.mime.text import MIMEText
#uname, pwd are username & password of gmail a/c i am trying to send from
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls() # get response(220, '2.0.0 Ready to start TLS')
server.login(uname,pwd) # get response(235, '2.7.0 Accepted')
toaddrs = ['(e-mail address removed)', '(e-mail address removed)' ] # list of To email addresses
msg = MIMEText('email body')
msg['Subject'] = 'email subject'
server.sendmail(fromaddr, toaddrs, msg.as_string())
]
The code above works perfectly fine on my local machine, but fails on the production server at the university where i work( all ports other than port 80 are blocked)
So , when i try to run the 2 py statements (in bold below) on a python prompt from the production server, which has port 587 blocked, i get the following error
{Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/smtplib.py", line 239, in __init__
(code, msg) = self.connect(host, port)
File "/usr/lib/python2.6/smtplib.py", line 295, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/lib/python2.6/smtplib.py", line 273, in _get_socket
return socket.create_connection((port, host), timeout)
File "/usr/lib/python2.6/socket.py", line 514, in create_connection
raise error, msg
socket.error: [Errno 101] Network is unreachable
}
1. How can i overcome this ?
A friend suggested , that i could use something called smtp relay, which would solve my problem, but would be time-consuming & a pain to set up.
I did some cursory googling & searching on stackoverflow but could not findany good, well explained results.
I dont know anything about SMTP.
Anybody has any recommendations on a good explanation on smtp relay & how to set it up for sending email from a gmail a/c using a python script ?
2. Also, is there a more elegant/cleaner/graceful solution to my problem than using an smtp relay ?
Any & all explanations/links/code snippets/thoughts/ideas/suggestions/feedback/comments/wisdom of the c.l.p community would be greatly appreciated.
Thanks a ton
cheers
ashish
email :
ashish.makani
domain:gmail.com
p.s. some more context so people dont presume we are spammers
These emails are automated diagnostic emails sent to a group of a few of usadmins, so we get notified when a python heartbeat script, detects a failure in things like n/w connectivity, router status, etc.
All of us dont use university email, we use gmail .
“The only way to do great work is to love what you do. If you haven’t found it yet, keep looking. Don’t settle. As with all matters of the heart, you’ll know when you find it.” - Steve Jobs (1955 - 2011)