2013-05-05 9 views

Odpowiedz

11

Tak; tutaj jest kod:

import smtplib 
fromMy = '[email protected]' # fun-fact: from is a keyword in python, you can't use it as variable, did abyone check if this code even works? 
to = '[email protected]' 
subj='TheSubject' 
date='2/1/2010' 
message_text='Hello Or any thing you want to send' 

msg = "From: %s\nTo: %s\nSubject: %s\nDate: %s\n\n%s" % (fromMy, to, subj, date, message_text) 

username = str('[email protected]') 
password = str('yourPassWord') 

try : 
    server = smtplib.SMTP("smtp.mail.yahoo.com",587) 
    server.login(username,password) 
    server.sendmail(fromMy, to,msg) 
    server.quit()  
    print 'ok the email has sent ' 
except : 
    print 'can\'t send the Email' 
+4

server.starttls() należy dodać przed wierszem z server.login, w przeciwnym razie wygeneruje wyjątek. – user6972

+0

'Rozszerzenie SMTP AUTH nie obsługiwane przez serwer." – Volatil3

2

Do obsługi znaków spoza zestawu ASCII; można użyć email package:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
from email.header import Header 
from email.mime.text import MIMEText 
from getpass import getpass 
from smtplib import SMTP_SSL 

# provide credentials 
login = '[email protected]' 
password = getpass('Password for "%s": ' % login) 

# create message 
msg = MIMEText('message body…', 'plain', 'utf-8') 
msg['Subject'] = Header('subject…', 'utf-8') 
msg['From'] = login 
msg['To'] = ', '.join([login, ]) 

# send it 
s = SMTP_SSL('smtp.mail.yahoo.com', timeout=10) #NOTE: no server cert. check 
s.set_debuglevel(0) 
try: 
    s.login(login, password) 
    s.sendmail(msg['From'], msg['To'], msg.as_string()) 
finally: 
    s.quit() 
5

I udręczone głowę (krótko) w zakresie za pomocą serwera SMTP Yahoo. 465 po prostu by nie działało. Zdecydowałem się przejść na trasę TLS przez port 587 i udało mi się uwierzytelnić i wysłać e-mail.