Autore Topic: Spedire un PDF con gb.net.smtp  (Letto 1792 volte)

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Spedire un PDF con gb.net.smtp
« il: 18 Aprile 2008, 12:21:55 »
Ho la necessità che il mio gestionale possa inviare documenti in PDF a destinatari di posta elettronica. Si tratta dell'invio in automatico delle fatture nelle e-mail dei clienti.

Ho subito inserito il componente gb.net.smtp nel mio progetto ed ho fatto qualche esperimento. Però al momento riesco solo a spedire del testo semplice. Se allego un file PDF questo arriva come file vuoto di testo semplice invece che in formato PDF. Ho letto nella (scarna) documentazione che non tutti i MimeType sono supportati e per questo ho scritto anche sulla mailing-list ufficiale.
Mi rivolgo a voi per avere consiglio: qualcuno ha mai usato questo componente? E' possibile inviare un file in allegato che non sia testo? C'è un altro sistema che potete suggerirmi?

P.S.:
questo è il codice che ho usato per le prove:
Codice: [Seleziona]

PUBLIC SUB InviaEmail_Click()
DIM Posta AS NEW SmtpClient

  Posta.To.Add(Trim(txtEmail.Text))
  Posta.Subject = Trim(txtOggetto.Text)
  Posta.Add(txtTesto.Text)
  Posta.Add(FileChooser1.SelectedPath, "application/pdf", "fattura.pdf")
  Posta.From = "xxxxxxx@yyyyyyyy.zz"
  Posta.Host = "xxxxx.yyyyyy.zzz"
  Posta.Send
  Message("Posta spedita")
 
END
Visita il mio sito personale: http://www.leonardomiliani.com

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Spedire un PDF con gb.net.smtp
« Risposta #1 il: 19 Aprile 2008, 09:48:51 »
ciao leo sono alle prese con l'8.04 appena ho tutto a posto vedo di dare una guardata alla cosa

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Spedire un PDF con gb.net.smtp
« Risposta #2 il: 19 Aprile 2008, 11:07:15 »
1)
attenzione al gestore degli aggiornamenti!
Dietro consiglio di Pixel, NON usare l'iconcina in alto a DX per aggiornare il sistema altrimenti ti riporterà Ubuntu alla 7.10 (provato personalmente con la beta, non so se con la RC fa lo stesso ma è meglio non rischiare!).
Usa sempre apt-get da linea di comando fino a quando non sarà rilasciata ufficialmente la 8.04, così che i repo verranno aggiornati e l'iconcina vedrà correttamente che la versione di Ubuntu su cui gira è l'ultima ufficiale.

2)
ti ringrazio per l'interessamento.
Mi hanno chiesto di automatizzare la procedura della fatturazione: vogliono che il documento sia inviato via email in automatico ai clienti che ne hanno dato autorizzazione per velocizzare le procedure. Il problema è che finché si tratta di allegare del testo non ci sono problemi ma documenti in formato PDF non sembra prenderli.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Spedire un PDF con gb.net.smtp
« Risposta #3 il: 19 Aprile 2008, 11:50:27 »
Come mi ha fatto notare Benoit sulla mailing-list ufficiale, il mio codice non era corretto.
Questa è la versione corretta:
Codice: [Seleziona]

Posta.Add(File.Load(FileChooser1.SelectedPath), "application/pdf", "fattura.pdf")

Come citato dalla (scarna) documentazione, il primo parametro devono essere i dati, non la path, quindi bisogna passare il file, non il suo percorso.

Però si è presentato un secondo problema, che ho subito citato sulla mailing-list.
Il componente gb.net.smtp non crea i messaggi di posta elettronica in maniera "standard" ma utilizza un sistema tutto suo.
Il corpo del messaggio viene inserito come fosse un allegato.
Il problema è che sia Thunderbird che il servizio webmail del mio indirizzo di posta non sono così capaci di distinguere correttamente fra questi allegati con Mimetype differenti per cui il testo allegato arriva ma il documento in Pdf no!
Se spedisco SOLO il Pdf questo arriva...

Non mi sembra un sistema corretto di generare il messaggio, ecco perché ho voluto puntualizzare la cosa.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Spedire un PDF con gb.net.smtp
« Risposta #4 il: 19 Aprile 2008, 11:52:50 »
Altra cosa...
Se inverto l'ordine di inclusione, vale a dire metto prima il Pdf e poi allego il corpo del messaggio, il primo arriva correttamente mentre il secondo no per l'errore di cui sopra!
Visita il mio sito personale: http://www.leonardomiliani.com

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Spedire un PDF con gb.net.smtp
« Risposta #5 il: 19 Aprile 2008, 12:03:15 »
Niente da fare...
Sembra che quel componente possa spedire solo 1 allegato!
Anche inserendo dentro 2 documenti Pdf, il secondo arriva ma non può essere salvato perché non si riesce a separarlo dall'altro.
Mi sa che al momento l'unica strada percorribile è creare un file testo contenente il corpo del messaggio e poi impacchettarlo insieme al documento Pdf ed infine allegare il tutto al messaggio e spedirlo.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Spedire un PDF con gb.net.smtp
« Risposta #6 il: 20 Aprile 2008, 16:54:18 »
Data la veloce successione dei tuoi post, non ho potuto risponderti prima.
Non ho domestichezza con il componente gambas, ma ho avuto a che fare con altri linguaggi e script vari, per cui ci ho sbattuto la testa parecchio...

Ho letto che hai scritto a Benoit e, inoltre ho visto che hai testato le modifiche al mime, ma nonostante tutto restano i problemi. E' probabile, anzi sicuro a questo punto, che il componente si limiti alla gestione di un singolo allegato, anche se questo è a dir poco limitante...

Hai provato a chiedere anche su questo problema ?

Altrimenti ti consiglio di usare, per il momento, un programma esterno, lanciato da gambas (es. mail, xmail, o altri...).

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Spedire un PDF con gb.net.smtp
« Risposta #7 il: 20 Aprile 2008, 23:22:18 »
Benoit mi ha risposto in privato chiedendomi il sorgente dell'email così come mi è arrivata perché anche secondo lui c'è qualcosa che non va ma ancora non mi ha risposto.

Per come vedo le cose io, mi sa che il componente è stato mal progettato dato che:
1)
non ha una proprietà "body" per creare il corpo vero e proprio del messaggio ma usa sempre il metodo Add() per aggiungere qualunque cosa all'email;
2)
gestisce solo 1 allegato, dato che dal secondo in poi il client di posta non è in grado di separare i file.

Al momento ho risolto molo salomonicamente.... chiamo da console con SHELL il programma Zip (devo inviare questi documenti a praticamente solo utenti Windows per cui meglio adoperare un formato che possono aprire tutti) e creo un archivio in cui inserisco: un piccolo file di testo che sarebbe poi il corpo del messaggio; i 2 documenti in Pdf che dovrei allegare.

Dovendo gestire 1 solo allegato, il componente fa il suo lavoro senza indugi  8-)
Visita il mio sito personale: http://www.leonardomiliani.com

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Spedire un PDF con gb.net.smtp
« Risposta #8 il: 22 Aprile 2008, 10:32:53 »
Tanto per informarvi...
Oggi Benoit mi ha risposto dicendomi che l'email che viene generata non risponde ai canoni del protocollo SMTP perché i separatori tra gli allegati non sono quelli standard ("\r\n" come in Windows) ma è "\n". E mi suggeriva di capire "perché" c'era questo errore...

Io gli ho risposto che ho usato solo il metodo Add() del componente per cui a me sembra che sia proprio il componente che ha qualche problemuccio..
Boh, ora proverò, se mi riesce, ad infilare una sequenza "\r\n" tra ogni allegato.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Spedire un PDF con gb.net.smtp
« Risposta #9 il: 22 Aprile 2008, 23:54:32 »
Niente da fare... però Benoit si è "confessato" dicendomi che la libreria che utilizza per l'invio dei messaggi è vecchiotta, buggata e non più aggiornata.
E poi ho un altro problema... il server SMTP che usiamo per la posta di lavoro richiede l'autenticazione, cosa che il componente gb.net.smtp non permette.

Ho provato a "giocare" un po' con la riga di comando per trovare un'applicazione da pilotare con uno SHELL tramite Gambas per inviare e-mail ma sbatto sempre su un problema: la composizione del messaggio. Sia nail che mailx che ho testato (abbinate ad msmtp per l'invio sul server) hanno una documentazione un po' fumosa e non mi è parso di trovare come fare a passare tutto da linea di comando. Allo stato attuale mi chiede sempre il corpo del messaggio via terminale con un bel CTRL+D per terminare l'inserimento e spedire il messaggio...

Qualcuno più esperto della console di me sa come fare?
Visita il mio sito personale: http://www.leonardomiliani.com

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Spedire un PDF con gb.net.smtp
« Risposta #10 il: 23 Aprile 2008, 12:58:32 »
Ho risolto installando e configurando mutt e msmtp (anche se con grande fatica.... meno male che c'è Sant'Internet, gente!  :leggere:)... in attesa che Benoit sistemi quel componente.
Visita il mio sito personale: http://www.leonardomiliani.com