Am 09.03.2013 22:20 schrieb Νίκος Γκρ33κ:
                SENDMAIL = '/usr/sbin/sendmail'
                        
                FROM = mail
                TO = ['supp...@superhost.gr']
                SUBJECT = "Επικοινωνία πιθανού πελάτη!"
                TEXT = comment

                message = """\
                                  From: %s
                                  To: %s
                                  Subject: %s
                                        
                                  %s
                                  """ % (FROM, ", ".join(TO), SUBJECT, TEXT)

                p = os.popen("%s -t -i" % SENDMAIL, "w")
                p.write(message)
                status = p.close()
                if status != 256:
                        print( "<h2><font color=lime>Ευχαριστώ πολύ για το ενδιαφέρον! Θα 
επικοινωνήσω μαζί σου άμεσα :-)</font></h2>" )
                else:
                        print( "<h2><font color=red>Δυστυχώς δεν μπόρεσε να 
αποσταλεί το e-mail :-(" )

===============

Do you see somehtign wrong in the above code?


I see some things here:

1. Your subject is not properly encoded.

All characters outside the ASCII area must be encoded in an appropriate way if you send an email. It MIGHT be the case that sendmail handles this for you, but probably not every version.

But that should not prevent sending the mail at all; probably some garbage would result.

2. You failed to tell us what "never gets delivered" means: do you get an error message?

3. You failed to give us a SSCCE <http://sscce.org/>: in order to test the code, I had to add several variable definitions and imports.

4., an I thik this is the point: you are indenting your message string.
If you put a print(message) somewhere into the code, you'll see that the email header lines don't start with the header names, but with spaces. That is something which sendmail cannot and won't handle. Likewise, the header-body-separator is probably broken as well.

Just write, even if your code is indented in some way:

                message = """\
From: %s
To: %s
Subject: %s

%s""" % (FROM, ", ".join(TO), SUBJECT, TEXT)

or maybe, just to be sure,

                message = "From: %s\nTo: %s\nSubject: %s\n\n%s" % \
                    (FROM, ", ".join(TO), SUBJECT, TEXT)

in order to get a useful result.


And, as you are working on it, don't use os.popen - it is deprecated. Better use subprocess:

replace

p = os.popen("%s -t -i" % SENDMAIL, "w")
p.write(message)
status = p.close()

with

import subprocess
sp = subprocess.Popen([SENDMAIL, '-t', '-i'], stdin=subprocess.PIPE)
sp.communicate(message)
status = sp.wait()

giving more flexibility.


HTH,

Thomas
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to