2013-05-05 10 views

risposta

11

Sì; ecco il codice:

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() deve essere aggiunto prima della riga con server.login altrimenti genererà un'eccezione. – user6972

+0

'Estensione AUTH SMTP non supportata dal server – Volatil3

2

Per supportare caratteri non ASCII; si potrebbe usare 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

ho collezionato la mia testa (brevemente) per quanto riguarda utilizzando server smtp di yahoo. 465 non funzionerebbe. Ho deciso di seguire la rotta TLS sulla porta 587 e sono stato in grado di autenticare e inviare email.

import smtplib 
from email.mime.text import MIMEText 
SMTP_SERVER = "smtp.mail.yahoo.com" 
SMTP_PORT = 587 
SMTP_USERNAME = "username" 
SMTP_PASSWORD = "password" 
EMAIL_FROM = "[email protected]" 
EMAIL_TO = "[email protected]" 
EMAIL_SUBJECT = "REMINDER:" 
co_msg = """ 
Hello, [username]! Just wanted to send a friendly appointment 
reminder for your appointment: 
[Company] 
Where: [companyAddress] 
Time: [appointmentTime] 
Company URL: [companyUrl] 
Change appointment?? Add Service?? 
change notification preference (text msg/email) 
""" 
def send_email(): 
    msg = MIMEText(co_msg) 
    msg['Subject'] = EMAIL_SUBJECT + "Company - Service at appointmentTime" 
    msg['From'] = EMAIL_FROM 
    msg['To'] = EMAIL_TO 
    debuglevel = True 
    mail = smtplib.SMTP(SMTP_SERVER, SMTP_PORT) 
    mail.set_debuglevel(debuglevel) 
    mail.starttls() 
    mail.login(SMTP_USERNAME, SMTP_PASSWORD) 
    mail.sendmail(EMAIL_FROM, EMAIL_TO, msg.as_string()) 
    mail.quit() 

if __name__=='__main__': 
send_email()