2015-07-14 4 views
6

J'utilise MailKit/MimeKit 1.2.7 (dernière version de NuGet).MimeKit: Comment intégrer des images?

J'ai essayé d'incorporer une image dans le corps HTML de mon email en suivant l'exemple du(section "Using a BodyBuilder").

Mon code actuel ressemble à ceci:

var builder = new BodyBuilder(); 

builder.HtmlBody = @"<p>Hey!</p><img src=""Image.png"">"; 

var pathImage = Path.Combine(Misc.GetPathOfExecutingAssembly(), "Image.png"); 
builder.LinkedResources.Add(pathLogoFile); 
message.Body = builder.ToMessageBody(); 

je peux envoyer cet e-mail et en fait l'image est attaché à l'e-mail. Mais il est pas intégré.

Ai-je raté quelque chose? Ou est la faute de ce Apple Mail (c'est le client de messagerie que j'utilise pour recevoir des courriels)?

Je suis reconnaissant pour toute idée (et merci beaucoup à Jeffrey Stedfast d'avoir fourni une si bonne boîte à outils !!).

Ingmar

Répondre

13

Essayez quelque chose d'un peu plus comme ceci:

var builder = new BodyBuilder(); 
var pathImage = Path.Combine (Misc.GetPathOfExecutingAssembly(), "Image.png"); 
var image = builder.LinkedResources.Add (pathLogoFile); 

image.ContentId = MimeUtils.GenerateMessageId(); 

builder.HtmlBody = string.Format (@"<p>Hey!</p><img src=""cid:{0}"">", image.ContentId); 

message.Body = builder.ToMessageBody(); 

Si cela fonctionne pour vous, je vais mettre à jour la documentation. Le problème est peut-être que l'implémentation multipart/related d'Apple ne résout pas la référence Image.png en utilisant l'en-tête Content-Location sur la partie image mime (probablement parce qu'il s'agit d'une URL relative). Le type d'URL cid: devrait fonctionner, mais c'est un peu plus compliqué à construire puisque vous devez connaître les valeurs Content-Id pour chaque pièce jointe d'image.

+0

Bonjour. Et merci pour votre conseil. Fonctionne très bien! En fait, j'utilise aussi le cid: stuff avec mon ancien composant email (avant de passer à MailKit). Donc, cette solution est parfaite pour moi. THX à nouveau. – Ingmar

+0

J'ai rencontré quelques problèmes plus encore aujourd'hui. Je vais les mettre dans des questions/messages séparés ici sur stackoverflow et serais plus qu'heureux si vous aviez quelques solutions plus faciles pour moi :) – Ingmar

+0

Génial, je vais mettre à jour les docs MimeKit pour utiliser cette approche. – jstedfast