CGI email script

Kent Johnson kent3737 at yahoo.com
Sat Nov 20 21:23:08 EST 2004


bojanraic at gmail.com wrote:
> I'm trying to write a basic Python email CGI script to send email
> through HTML email form.
> I've seen a lot of examples out there, but nothing I tried so far
> seemed to work. So I would like to know what I am doing wrong.
> #!/usr/bin/python
> 
> import cgitb
> cgitb.enable()
> import cgi
> import smtplib
> 
> print "Content-type: text/html\n"

This line should be inside main() so it is printed each time the script 
runs (OK maybe for a CGI it doesn't matter...), and it should have two 
\n - you need a blank line between the HTTP headers and the body.

> 
> def main():
>     form = cgi.FieldStorage()
>     if form.has_key("name") and form["name"].value != "":
>         fromaddress = form["email"].value
>         toaddress = my at email.com
>         message = form["comment"].value
> 
>     server = smtplib.SMTP('localhost')
>     server.set_debuglevel(1)
>     server.sendmail(fromaddress, toaddress, message)

Strangely enough, the message actually has to include the from and to 
addresses as well. Try something like this:
     msg = '''From: %s
To: %s
Subject: Test
%s
''' % (fromaddress, toaddress, message)

     server.sendmail(fromaddress, toaddress, message)

>     server.quit()
> 
>     print "<html><head><title>Sent</title></head>"
>     print "<body><h1 align=center>",
>     print "<p>Your message has been sent!</body>"
>     print "</html>"
> 
> if __name__ == '__main__': main()
> 
> 
> 
> Of course, I change the email address to my own.
> I keep getting the premature end of script headers error.
> 
> Several questions:
> 
> 1. server = smtplib.SMTP('localhost') should return the name of the
> server, right? I don't need to explicitly name it, or do I?

You should pass the name of the SMTP server, is that on your local machine?

Kent

> 2. cgitb.enable() - shouldn't that give me a trace back if something
> goes wrong so I can debug the code? It doesn't seem to give me
> anything...
> 3. What am I doing wrong here? How can I fix the errors and make it
> work?



More information about the Python-list mailing list