Question

J'ai un flux chargé avec HTML que je suis d'une exportation. Je peux prendre ce html à partir du flux dans un octet [] (est-il une autre façon?), Et je veux écrire cet octet [] à un organisme de messagerie html.

La raison de le faire est que je veux exporter un rapport au format html, et utiliser ces données dans le corps du courrier, au lieu de l'exporter au format PDF et l'envoyer en pièce jointe.

Espérons qu'il est assez clair, laissez-moi savoir si je dois ajouter quelque chose.

Merci

Était-ce utile?

La solution

Je l'ai trouvé. Il est très simple, même si je ne trouve pas le résultat que je voudrais, ayant une sortie formatée directement à la poste, la question était plus sur la façon d'utiliser les octets stockés dans un flux HTML de sortie.

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. Que pensez-vous?

Autres conseils

Vous pouvez utiliser un message multipart Mime et passer le courant au constructeur de AlternateView ainsi, il suffit de ne pas fermer le flux ou le nettoyer qu'après avoir envoyé le message (appel MailMessage.Dispose () pour gérer le nettoyage pour vous si vous le souhaitez). Si vous allez avec votre solution, assurez-vous de mettre mail.IsBodyHtml à true pour le type de contenu pour obtenir réglé correctement sinon le client de messagerie de réception ne peut pas afficher le code HTML en HTML car il pense qu'il est le texte brut. Si la sortie du courrier semble drôle dans votre client de messagerie alors 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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top