Domanda

Ho un flusso di carico di HTML che ho avuto da un'esportazione. Posso prendere questo html dal flusso in un byte [] (c'è qualche altro modo?), E voglio scrivere questo byte [] a un corpo HTML di posta elettronica.

Il motivo per fare questo è che voglio esportare un report in formato HTML, e utilizzare questi dati nel corpo della mail, invece di esportare in PDF e inviarlo come allegato.

La speranza è abbastanza chiaro, fammi sapere se ho bisogno di aggiungere qualcosa.

Grazie

È stato utile?

Soluzione

L'ho trovato. E 'molto semplice, anche se non ho trovato il risultato vorrei, avere un output formattato direttamente alla posta, la domanda era più su come utilizzare i byte memorizzati in un flusso di output HTML.

Prendo il torrente e creare una StreamReader:

            stream.Position = 0;
            StreamReader reader = new StreamReader(stream);

Poi, nel corpo dell'oggetto posta, ho letto il contenuto del flusso utilizzando lo StreamReader:

mail.Body = reader.ReadToEnd();

Questo è tutto. Cosa ne pensi?

Altri suggerimenti

È possibile utilizzare un messaggio Multipart Mime e passare il torrente al costruttore AlternateView pure, solo che non chiudere il flusso o pulirlo fino a dopo aver inviato il messaggio (chiamata MailMessage.Dispose () per gestire la pulizia per voi se vi piace). Se si va con la soluzione, assicurarsi di impostare mail.IsBodyHtml su true in modo che il tipo di contenuto per ottenere impostato correttamente in caso contrario il client di posta elettronica ricevente non può visualizzare il codice HTML come HTML dal momento che penserà che sia testo normale. Se l'uscita della posta sembra divertente nel vostro client di posta elettronica allora questo è probabilmente il motivo.

Il codice dovrebbe essere simile a questa (troncato a solo le parti rilevanti):

MailMessage message = new MailMessage();
message.AlternateViews.Add(new AlternateView(stream, new ContentType("text/HTML"));
// do NOT set Body, IsBodyHtml, or ContentType on MailMessage or 
// you'll mess up the mime types

smtpClient.Send(message);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top