2014-11-18 7 views
7

Vi allego un file da un particolare percorso C: \ importante \ log.txterrore: lista di oggetti non è attribuire lstrip in inviando una mail con allegato

sender = '[email protected]' 
receiver = ['[email protected]'] 
message = """From: From Pooja Gupta <[email protected]> 
To: To Shubha Goel <[email protected]> 
Subject: SMTP e-mail test 

This is a test e-mail message. 
""" 

file_name = 'C:\important\log.txt' 
msg=MIMEMultipart() 
msg['From'] = sender 
msg['To'] = receiver 
msg['Subject'] = message 
msg['Date'] = email.Utils.formatdate(localtime=True) 

# build the attachment 
att = MIMEBase('application', 'base64') 
att.set_payload(open(file_name, 'rb').read()) 
email.Encoders.encode_base64(att) 
att.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(file_name)) 
msg.attach(att) 

print 'successfully built attachment' 
try: 
    session = smtplib.SMTP('smtp.gmail.com',587) 
    print 'Starting..' 
    session.ehlo() 
    print 'ehlo executed..' 
    session.starttls() 
    print 'starttls done' 

    session.login(sender,'snxzoumwhpybzvmo') 
    print 'logged in' 
    session.sendmail(sender,receiver,msg.as_string()) 
    print 'sendmail executed..now quitting' 
    session.close() 

except smtplib.SMTPRecipientsRefused: 
    print 'Recipient refused' 
except smtplib.SMTPAuthenticationError: 
    print 'Auth error' 
except smtplib.SMTPSenderRefused: 
    print 'Sender refused' 
except smtplib.SMTPException: 
    print('Error') 

Continua a darmi lo stesso errore attributo di lista degli errori oggetto non ha l'attributo lstrip il seguente è il traccia di errore, di stack:

Traceback (most recent call last): 
    File "<pyshell#8>", line 1, in <module> 
    execfile('C:\important\secret_file.pyw') 
    File "C:\important\secret_file.pyw", line 45, in <module> 
    session.sendmail(sender,receiver,msg.as_string()) 
    File "C:\Python27\lib\email\message.py", line 137, in as_string 
    g.flatten(self, unixfrom=unixfrom) 
    File "C:\Python27\lib\email\generator.py", line 83, in flatten 
    self._write(msg) 
    File "C:\Python27\lib\email\generator.py", line 115, in _write 
    self._write_headers(msg) 
    File "C:\Python27\lib\email\generator.py", line 164, in _write_headers 
    v, maxlinelen=self._maxheaderlen, header_name=h).encode() 
    File "C:\Python27\lib\email\header.py", line 410, in encode 
    value = self._encode_chunks(newchunks, maxlinelen) 
    File "C:\Python27\lib\email\header.py", line 370, in _encode_chunks 
    _max_append(chunks, s, maxlinelen, extra) 
    File "C:\Python27\lib\email\quoprimime.py", line 97, in _max_append 
    L.append(s.lstrip()) 
AttributeError: 'list' object has no attribute 'lstrip' 

prega di aiuto.

risposta

8

è stato un piccolo errore. il parametro del ricevitore era di tipo lista. o dovrebbe essere lista convertita in stringa usando il metodo join o se è un singolo destinatario, quindi passarlo come una stringa solo

+0

Una stringa con che tipo di delimitatore ... Una virgola, uno spazio, un punto e virgola, ecc.? –

+2

@JamieIvanov: la stringa deve essere delimitata da virgole. –

3

receiver = ['[email protected]'] Questa è una lista ma msg [' Per '] si aspetta una stringa e quindi l'errore.

È possibile utilizzare ','. Partecipare (ricevitore) e questo dovrebbe risolvere il problema.

Problemi correlati