2016-05-10 2 views

Répondre

1

Vous pouvez utiliser la classe MailMessage pour construire l'e-mail, et la classe SmtpClient pour envoyer le message. Vous devez configurer le SmtpClient de manière appropriée *.

Pour intégrer une image, vous devez définir l'e-mail pour être HTML, et comprennent une autre vue avec l'image intégrée:

var mail = new MailMessage(); 
mail.IsBodyHtml = true; 

var inline = new LinkedResource(@"C:\path\to\your\image.png"); 
inline.ContentId = Guid.NewGuid().ToString(); 
var htmlBody = @"<img src='cid:" + inline.ContentId + @"'/>"; // Include whatever other content in the html body here. 
var alternateView = AlternateView.CreateAlternateViewFromString(htmlBody, null, MediaTypeNames.Text.Html); 
alternateView.LinkedResources.Add(inline); 

mail.AlternateViews.Add(alternateView); 

Réglez ensuite les vers/depuis/domaines et utilisez la SmtpClient.Send Method (ou SendAsync) pour envoyer l'email.

* De la documentation MSDN:

Pour construire et d'envoyer un message électronique en utilisant SmtpClient, vous devez spécifier les informations suivantes:

  • Le serveur hôte SMTP que vous utilisez pour envoyer email. Voir les propriétés Host et Port. Informations d'identification pour l'authentification, si requis par le serveur SMTP. Voir la propriété Credentials.

  • L'adresse e-mail de l'expéditeur. Voir les méthodes Send et SendAsync qui prennent un paramètre from. Voir également la propriété MailMessage.From.

  • L'adresse de messagerie ou les adresses des destinataires. Voir les méthodes Send et SendAsync qui prennent un paramètre de destinataire. Voir également la propriété MailMessage.To.

  • Le contenu du message. Voir les méthodes Send et SendAsync qui prennent un paramètre de corps. Voir également la propriété MailMessage.Body.

+0

J'ai besoin de générer l'image (graphique, graphique), je veux dire. le problème est de savoir comment générer les cartes et envoyé par e-mail. Je comprends que je peux envoyer des images. mais comment générer le graphique et en faire une image .. J'ai un travailleur de fond qui fonctionne 24/7 sur un certain nombre de serveurs et envoyer un e-mail; avant d'envoyer l'e-mail, je dois générer un graphique avec des données DB et cela doit être inclus dans l'e-mail. – user3046993

+0

Oh, je comprends. Avez-vous quelque chose qui génère déjà ces graphiques? Si oui, vous pouvez utiliser un HttpClient ou quelque chose pour obtenir l'image, puis faire un encodage Base64 ou quelque chose comme dans la réponse d'Ollie. – merthsoft

0

Dotnet contient une classe MailMessage avec une propriété IsBodyHtml. Vous pouvez construire votre message électronique en utilisant une chaîne de texte. Dans la chaîne de texte, écrivez HTML avec une balise <img ..> pointant vers le graphique.

Vous pouvez insérer le flux de données pour l'image directement dans l'étiquette d'image à l'aide du data: URI scheme, avec des étiquettes qui ne se réfèrent pas à des images externes. Ça ressemble à ça.

img src="data:image/png;base64,iVBORw0KG==" /> 

Vous pouvez le faire en suivant les conseils ici. Converting image into data:image/png;base64 for web page disaplay