# $Id: sendmail.py,v 1.11 2001/10/15 18:19:49 kjetilja Exp $
## System modules
from gtk import *
from gnome.ui import *
## Error messages from the GUI
err1 = """Unable to connect to mail server"""
err2 = """Unable to send mail to the specified recipient(s)"""
err3 = """Sendmail command did not succeed in sending the mail"""
err4 = """Sendmail returned the following:\n\n%s"""
## Warning messages from the GUI
warn1 = """Unable to perform clean SMTP disconnect for server:\n%s"""
## Send mail by explicit connect to mail server
def sendmail_server(host, frm, to, msg):
# Connect to outgoing mail host
import smtplib
try:
smail = smtplib.SMTP(host)
except:
w = GnomeErrorDialog(err1)
w.show()
return 0
# Blast message to server (handle the CC and TO recipients)
try:
smail.sendmail(frm, to, msg)
except:
try:
smail.quit()
except:
pass
w = GnomeErrorDialog(err2)
w.show()
return 0
try:
# We might get a premature disconnect even though the message
# got through ok. Print a warning to alert the user since I'm
# not convinced the mail got through.
smail.quit()
except:
w = GnomeWarningDialog(warn1 % host)
w.show()
return 1
## Use local sendmail command to send mail
def sendmail_cmd(cmd, msg):
import popen2
try:
r,w,e = popen2.popen3("%s -t -i" % cmd, 8192)
except:
w = GnomeErrorDialog(err3)
w.show()
return 0
w.write(msg + "\n\n")
w.close()
try:
errors = r.read()
except IOError:
errors = ''
r.close()
e.close()
if errors != '':
w = GnomeErrorDialog(err4 % errors)
w.show()
return 0
return 1
syntax highlighted by Code2HTML, v. 0.9.1