initial version, working to send to smtp.gmail.com using SSL
This commit is contained in:
commit
53096c9380
87
pygtk-smtp-send-note.py
Executable file
87
pygtk-smtp-send-note.py
Executable file
@ -0,0 +1,87 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import os
|
||||
import sys
|
||||
import gtk
|
||||
import smtplib
|
||||
|
||||
message = ''
|
||||
|
||||
def get_config(fname):
|
||||
config = {}
|
||||
fh = open(fname, 'r')
|
||||
script = fh.read()
|
||||
fh.close()
|
||||
exec(script, config)
|
||||
return config
|
||||
|
||||
def error_popup(err_msg):
|
||||
win = gtk.Window()
|
||||
lbl = gtk.Label(err_msg)
|
||||
button = gtk.Button('Close')
|
||||
vbox = gtk.VBox()
|
||||
vbox.pack_start(lbl)
|
||||
vbox.pack_start(button)
|
||||
win.add(vbox)
|
||||
win.connect('destroy', lambda x: gtk.main_quit())
|
||||
button.connect('clicked', lambda x: gtk.main_quit())
|
||||
win.show_all()
|
||||
gtk.main()
|
||||
win.hide()
|
||||
|
||||
def main(argv):
|
||||
config = {}
|
||||
for arg in argv[1:]:
|
||||
config = get_config(arg)
|
||||
if not ('server' in config and 'port' in config and 'user' in config
|
||||
and 'password' in config and 'to_addr' in config
|
||||
and 'from_addr' in config):
|
||||
sys.stderr.write('Missing a config field!\n')
|
||||
return 1
|
||||
|
||||
win = gtk.Window()
|
||||
entry = gtk.Entry()
|
||||
entry.set_width_chars(80)
|
||||
win.add(entry)
|
||||
def activate_cb(*args):
|
||||
global message
|
||||
message = entry.get_text()
|
||||
gtk.main_quit()
|
||||
def cancel_cb(*args):
|
||||
gtk.main_quit()
|
||||
win.connect('destroy', cancel_cb)
|
||||
entry.connect('activate', activate_cb)
|
||||
win.show_all()
|
||||
gtk.main()
|
||||
win.hide()
|
||||
|
||||
if message == '':
|
||||
return 0
|
||||
|
||||
msg = '''From: <%s>
|
||||
To: <%s>
|
||||
Subject: %s
|
||||
|
||||
<EOM>
|
||||
''' % (config['from_addr'], config['to_addr'], message)
|
||||
try:
|
||||
smtp = smtplib.SMTP_SSL(config['server'], config['port'])
|
||||
smtp.login(config['user'], config['password'])
|
||||
smtp.sendmail(config['from_addr'], config['to_addr'], msg)
|
||||
smtp.quit()
|
||||
except smtplib.SMTPHeloError:
|
||||
error_popup('Unable to connect to SMTP server')
|
||||
except smtplib.SMTPAuthenticationError:
|
||||
error_popup('Unable to authenticate to SMTP server')
|
||||
except smtplib.SMTPRecipientsRefused:
|
||||
error_popup('Recipients refused')
|
||||
except smtplib.SMTPSenderRefused:
|
||||
error_popup('Sender refused')
|
||||
except smtplib.SMTPDataError:
|
||||
error_popup('SMTP data error')
|
||||
# except:
|
||||
# error_popup('Unknown SMTP error')
|
||||
|
||||
return 0
|
||||
|
||||
sys.exit(main(sys.argv))
|
Loading…
x
Reference in New Issue
Block a user