Lettura file xls ed invio mail

di il
1 risposte

Lettura file xls ed invio mail

Buonasera a tutti,
sono nuovo nella programmazione con python ho provato a sviluppare un programma che legge un file xls e invia le email per ogni riga letta. Il programma funziona bene quando nel campo BODY riporto quanto segue:
BODY = string.join([
            'To: %s' % TO,
            'From: %s' % gmail_sender,
            'Subject:%s' % SUBJECT,
        '',
        'Ciao',
        'Il dato è stato inviato correttamente' ], "\r\n")
        
        try:
            server.sendmail(gmail_sender, [TO], BODY)
            print 'email sent'
        except:
            print 'error sending mail' 

Mentre se nel capo BODY riporto delle variabili il programma non invia la mail e riporta il msg "error sending mail".

Come riporto di seguito:
 BODY = string.join([
            'To: %s' % TO,
            'From: %s' % gmail_sender,
            'Subject:%s' % SUBJECT,
        '',
        'Ciao',
        [color=#FF0040]'Il prodotto indicato :"%s" ' % prod,
        'riporta la seguente data: %s ' % data[/color]
            ], "\r\n")
        
        try:
            server.sendmail(gmail_sender, [TO], BODY)
            print 'email sent'
        except:
            print 'error sending mail' 
Per completezza riporto il codice completo:
 import xlrd
import smtplib
import time
import string

path = "C://Users/r/Documents/D/r//aperte_agosto.xls"

wb = xlrd.open_workbook(path)
sh = wb.sheet_by_index(1)

for row in sh.get_rows():
    erogatore = row[4].value
    link = row[2].value + " " + row[3].value
    prod = row[2].value
    data = row[3].value
    email = row[6].value

    print (erogatore)
    print (link)
    print (email)

    if email != ' ':
        TO = 'xxxxx@gmail.com'
        SUBJECT = 'Oggetto email %s' % erog
        TEXT = 'Here is the message  %s  %s' % (link, email)
        #TEXT = 'Buongiorno..'
        TEXT1 = email
        gmail_sender = 'yyyyyyyyyy@gmail.com'
        gmail_passwd = 'xxxxxxxxxxx'

        print (TEXT)
        print (TEXT1)

        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.ehlo()
        server.starttls()
        server.ehlo()
        server.login(gmail_sender, gmail_passwd)
        BODY = string.join([
            'To: %s' % TO,
            'From: %s' % gmail_sender,
            'Subject:%s' % SUBJECT,
        '',
        'Ciao',
        'Il prodotto indicato :"%s" ' % prod,
        'riporta la seguente data: %s ' % data
            ], "\r\n")
        
        try:
            server.sendmail(gmail_sender, [TO], BODY)
            print 'email sent'
        except:
            print 'error sending mail'

        time.sleep(5)

        server.quit() 
Ringrazio in anticipo per la risposta.

a presto grazie

1 Risposte

  • Re: Lettura file xls ed invio mail

    Migliora il log di errore: probabilmente le righe
    prod = row[2].value
    data = row[3].value
    non riportano valori corretti (fai una stampa di BODY).
Devi accedere o registrarti per scrivere nel forum
1 risposte