2009-08-24 6 views
0

J'ai un flux chargé de HTML que j'ai obtenu à partir d'une exportation. Je peux prendre ce code HTML du flux dans un octet [] (existe-t-il un autre moyen?), Et je veux écrire ce byte [] dans un corps de messagerie html.Écrire du contenu html dans un courrier en utilisant un flux

La raison pour cela est que je veux exporter un rapport vers html, et utiliser ces données dans le corps du mail, au lieu de l'exporter en pdf et de l'envoyer en pièce jointe.

Espérons que c'est assez clair, laissez-moi savoir si j'ai besoin d'ajouter quelque chose.

Merci

+0

ok, quelle est votre question? – Cleiton

Répondre

0

Je l'ai trouvé. C'est très simple, bien que je n'aie pas trouvé le résultat que je voudrais, ayant une sortie formatée directement au mail, la question était plus sur la façon d'utiliser les octets stockés dans un flux pour sortir html.

Je prends le flux et crée un StreamReader:

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

Ensuite, dans le corps de l'objet du courrier, je lis le contenu du flux en utilisant StreamReader:

mail.Body = reader.ReadToEnd(); 

C'est tout . Qu'est-ce que tu penses?

0

Vous pouvez utiliser un message MIME en plusieurs parties et transmettre le flux au constructeur Alternate, ne fermez pas le flux ou ne le nettoyez qu'après avoir envoyé le message (appelez MailMessage.Dispose() pour le gérer nettoyage pour vous si vous aimez). Si vous y allez avec votre solution, assurez-vous de régler mail.IsBodyHtml sur true pour que le type de contenu soit correctement défini, sinon le client de courrier récepteur ne pourra pas afficher le HTML en HTML car il pensera qu'il s'agit d'un texte brut. Si la sortie du mail semble drôle dans votre client de messagerie, c'est probablement pourquoi.

Le code ressemblerait à quelque chose comme ceci (tronqué uniquement les parties pertinentes):

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); 
Questions connexes