Spedizione via email

giovedì 12 febbraio 2009 - 15.17

gorkj Profilo | Newbie

Ciao a tutti qualcuno sa indirizzarmi su come fare per gestire la spedizione via email di un documento?
Più precisamente: ho un programma in C++ che si appoggia a crystal per le stampe, io vorrei creare una funzione che mi permettta di spedire il file che dovrei stampare via email senza passare da anteprima.
Avevo pensato di stampare direttamente il file su pdf poi in qualche maniera di spedirlo ad outlook, ma come?
grazie mille

cenere Profilo | Senior Member

usa la classe mail del framework

colale Profilo | Newbie

non so' se l'aiuto di cenere sia servito a gorkj... magari lui intendeva sapere il passaggio da un crystal reports all'effettivo invio della mail....
Stesso problema anche per me.... ma da report services e in c#
grazie mille

freeteo Profilo | Guru

Ciao a tutti e scusate del ritardo nella risposta, probabilmente avrete già risolto ma cmq vi rispondo lo stesso.

Sia per Sql Reporting che per Crystal Report è possibile esportare la stampa in pdf (rispettivamente con il metodo "Render" e "Export") e quindi si tratta di vedere come fare a spedire una mail con un allegato.

Il codice è abbastanza semplice:
MailMessage mail = new MailMessage("from@...", "to@..."); mail.Subject = "..."; mail.Body = "..."; mail.Attachments.Add(new Attachment("c:\\....pdf")); SmtpClient client = new SmtpClient("mail.azienda.it", 25); client.Send(mail);

a quel punto come dicevamo prima esportate e poi inviate la mail da codice C# o C++ (quest'ultimo non lo uso, ma cmq sarà molto simile a quello che ho scritto) con la classe "MailMessage" del Framework.

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

colale Profilo | Newbie

Forse il problema e' lutilizzo del metodo "Render" per esportare il report....
Quindi se ho capito bene, il report va' comunque salvato da qualche parte in formato .pdf per poi andarselo a riprendere come allegato alla mail.... A questo punto potrebbe essere consigliabile cancellare il file .pdf una volta inviata la mail, piu' che altro per evitare che si accumulino eccessive pagine...

se freeteo o qualcun'altro mi puo' spigare meglio il passaggio da report a file (.pdf o altro....), con il metodo render....

mille grazie!

luxsor Profilo | Guru

Ciao Alessio,
per esportare il report creato in un file PDF usa questo codice:

nomedelreport.ExportToDisk(ExportFormatType.PortableDocFormat, "percorso di destinazione")


Fammi sapere

freeteo Profilo | Guru

Ciao,
confermo quanto detto da luxsor, puoi usare quel metodo per farti il file pdf, salvandolo su un path, che può tranquillamente essere un file temporaneo magari recuperato con "Path.GetTempFileName()".

Se invece vuoi farlo in memoria senza creare il file (che magari poi devi ricordari di cancellarlo) puoi fargli esportare il report su uno stream in memoria:
Stream st = report.ExportToStream(ExportFormatType.PortableDocFormat); byte[] arr = new byte[st.Length]; st.Read(arr, 0, (int)st.Length);

e poi passare quello come allegato, sempre che sia possibile passare un array di byte...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5