Luke Paireepinart wrote: > 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? :)
LOL, my apologies Luke. You see, I was bloody tired last night, had just found out how to do it and didn´t have it in me to google for it or RTFM, so I said "let's ask the guys". Sorry, and thanks a lot for taking the time to answer me. I'm just rushing out to work so I'll take a look tonight and see if I get it, I'm net impaired you see, and when they start with all those acronyms my brain stops :-) Thanks again. Ricardo > 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