Ricardo Aráoz wrote: > So I eventually got to sending mail with python. > Some articles, trying and google led me to this script: > > import smtplib > import time > > date = time.ctime(time.time( )) > >From = '[EMAIL PROTECTED]' > To = ['[EMAIL PROTECTED]', '[EMAIL PROTECTED]'] > Subj = 'Hi' > text = ('From: %s\nTo: %s\nDate: %s\nSubject: %s\n\n' > % (From, ';'.join(To), date, Subj)) > > s = smtplib.SMTP('smtp.gmail.com') > s.set_debuglevel(1) > s.ehlo() > s.starttls() > s.ehlo() > s.login('foo', 'bar') > s.sendmail(From, To, text) > s.close() > > > So, if there's someone who really knows this stuff in the neighborhood > I'd like to ask a couple of questions. > What is ehlo and why do I have to call it twice? And set_debuglevel? > If I where to connect through other smtp server the sequence would be > the exactly the same, say yahoo or hotmail? > Are From: To: Date: and Subject: mandatory in the contents of the > email(text)? Do I have to put "real" address in From when calling > sendmail()? And in the contents? > Ok, if someone can answer these I'll be grateful. > > TIA > > Ricardo > Ricardo - I say this in the nicest way possible, but did you RTFM? :) Python has built-in help support on modules. You should start there, do some Googling, and if you're stumped, get some help. Not for any other reason than it'll probably get you 1) more experience at navigating the docs, and 2) a quicker, probably more detailed response.
So using Help, we get: >>> import smtplib >>> help(smtplib) Help on module smtplib: NAME smtplib - SMTP/ESMTP client class. FILE c:\python24\lib\smtplib.py [snip 10 pages of documentation] >>> help(smtplib.SMTP.set_debuglevel) Help on method set_debuglevel in module smtplib: set_debuglevel(self, debuglevel) unbound smtplib.SMTP method Set the debug output level. A non-false value results in debug messages for connection and for all messages sent to and received from the server. >>> help(smtplib.SMTP.ehlo) Help on method ehlo in module smtplib: ehlo(self, name='') unbound smtplib.SMTP method SMTP 'ehlo' command. Hostname to send for this command defaults to the FQDN of the local host. >>> help(smtplib.SMTP.sendmail) Help on method sendmail in module smtplib: sendmail(self, from_addr, to_addrs, msg, mail_options=[], rcpt_options=[]) unbound smtplib.SMTP method This command performs an entire mail transaction. The arguments are: - from_addr : The address sending this mail. - to_addrs : A list of addresses to send this mail to. A bare string will be treated as a list with 1 address. - msg : The message to send. - mail_options : List of ESMTP options (such as 8bitmime) for the mail command. - rcpt_options : List of ESMTP options (such as DSN commands) for all the rcpt commands. If there has been no previous EHLO or HELO command this session, this method tries ESMTP EHLO first. If the server does ESMTP, message size and each of the specified options will be passed to it. If EHLO fails, HELO will be tried and ESMTP options suppressed. This method will return normally if the mail is accepted for at least one recipient. It returns a dictionary, with one entry for each recipient that was refused. Each entry contains a tuple of the SMTP error code and the accompanying error message sent by the server. This method may raise the following exceptions: SMTPHeloError The server didn't reply properly to the helo greeting. SMTPRecipientsRefused The server rejected ALL recipients (no mail was sent). SMTPSenderRefused The server didn't accept the from_addr. SMTPDataError The server replied with an unexpected error code (other than a refusal of a recipient). Note: the connection will be open even after an exception is raised. Example: >>> import smtplib >>> s=smtplib.SMTP("localhost") >>> tolist=["[EMAIL PROTECTED]","[EMAIL PROTECTED]","[EMAIL PROTECTED]","[EMAIL PROTECTED]"] >>> msg = '''\ ... From: [EMAIL PROTECTED] ... Subject: testin'... ... ... This is a test ''' >>> s.sendmail("[EMAIL PROTECTED]",tolist,msg) { "[EMAIL PROTECTED]" : ( 550 ,"User unknown" ) } >>> s.quit() In the above example, the message was accepted for delivery to three of the four addresses, and one was rejected, with the error code 550. If all addresses are accepted, then the method will return an empty dictionary. >>> So mess around in the built-in docs, then check python.org's docs, and let us know what you find :) Also, try experimenting! pass it stuff that you don't think will work just to see if maybe it does :D -Luke _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor