2009-08-24 2 views
0

Ich habe einen Stream mit HTML geladen, die ich von einem Export erhalten habe. Ich kann diesen HTML-Code aus dem Stream in einem Byte [] nehmen (gibt es einen anderen Weg?), Und ich möchte dieses Byte [] in einen HTML-Mail-Body schreiben.HTML-Inhalt in einer Mail mit einem Stream schreiben

Der Grund dafür ist, dass ich einen Bericht nach HTML exportieren möchte, und diese Daten im Text der E-Mail verwenden, anstatt sie in PDF zu exportieren und als Anhang zu senden.

Ich hoffe, es ist klar genug, lass es mich wissen, wenn ich etwas hinzufügen muss.

Danke

+0

ok, was ist Ihre Frage? – Cleiton

Antwort

0

Ich habe es gefunden. Es ist sehr einfach, obwohl ich nicht das Ergebnis gefunden habe, das ich möchte, mit einer formatierten Ausgabe direkt an die E-Mail, die Frage war mehr über die Verwendung der Bytes in einem Stream gespeichert, um HTML auszugeben.

ich den Strom nehmen und ein Stream erstellen:

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

Dann im Körper des E-Mail-Objekts, las ich den Inhalt des Stroms der Stream mit:

mail.Body = reader.ReadToEnd(); 

Das ist alles . Was denken Sie?

0

Sie können eine Multipart-Mime-Nachricht verwenden und den Stream auch an den AlternateView-Konstruktor übergeben. Schließen Sie den Stream einfach nicht oder bereinigen Sie ihn erst nach dem Senden der Nachricht (rufen Sie MailMessage.Dispose() auf Aufräumen für Sie, wenn Sie mögen). Wenn Sie mit Ihrer Lösung gehen, stellen Sie sicher, dass mail.IsBodyHtml auf true gesetzt ist, damit der Inhaltstyp korrekt eingestellt wird, da der empfangende Mail-Client den HTML-Code möglicherweise nicht als HTML anzeigt, da er glaubt, dass es sich um reinen Text handelt. Wenn die Ausgabe der Mail in Ihrem Mail-Client komisch aussieht, dann ist das wahrscheinlich der Grund.

Der Code würde wie folgt aussehen (abgeschnitten nur die relevanten Teile):

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); 
Verwandte Themen