web-dev-qa-db-fra.com

Puis-je envoyer des fichiers par e-mail à l'aide de MailKit?

En tant que titre, MailKit est-il pris en charge pour l'envoi de fichiers?
Si oui, comment puis-je le faire?

27
KlynkC

Oui. Ceci est expliqué dans la documentation ainsi que dans la FAQ .

De la FAQ:

Comment créer un message avec des pièces jointes?

Pour créer un message avec des pièces jointes, la première chose à faire est de créer un multipart/mixed conteneur auquel vous voudrez ensuite ajouter le corps du message en premier. Une fois que vous avez ajouté le corps, vous pouvez ensuite y ajouter des parties MIME contenant le contenu des fichiers que vous souhaitez joindre, en veillant à définir le Content-Disposition valeur d'en-tête à joindre. Vous souhaiterez probablement également définir le paramètre filename sur le Content-Disposition en-tête ainsi que le paramètre name sur le Content-Type entête. La façon la plus pratique de le faire est d'utiliser simplement la propriété MimePart.FileName qui définira les deux paramètres pour vous ainsi que la définition de Content-Disposition la valeur de l'en-tête à attachment si elle n'a pas déjà été définie sur autre chose.

var message = new MimeMessage ();
message.From.Add (new MailboxAddress ("Joey", "[email protected]"));
message.To.Add (new MailboxAddress ("Alice", "[email protected]"));
message.Subject = "How you doin?";

// create our message text, just like before (except don't set it as the message.Body)
var body = new TextPart ("plain") {
    Text = @"Hey Alice,

What are you up to this weekend? Monica is throwing one of her parties on
Saturday and I was hoping you could make it.

Will you be my +1?

-- Joey
"
};

// create an image attachment for the file located at path
var attachment = new MimePart ("image", "gif") {
    Content = new MimeContent (File.OpenRead (path)),
    ContentDisposition = new ContentDisposition (ContentDisposition.Attachment),
    ContentTransferEncoding = ContentEncoding.Base64,
    FileName = Path.GetFileName (path)
};

// now create the multipart/mixed container to hold the message text and the
// image attachment
var multipart = new Multipart ("mixed");
multipart.Add (body);
multipart.Add (attachment);

// now set the multipart/mixed as the message body
message.Body = multipart;

Une façon plus simple de construire des messages avec des pièces jointes consiste à tirer parti de la classe BodyBuilder .

var message = new MimeMessage ();
message.From.Add (new MailboxAddress ("Joey", "[email protected]"));
message.To.Add (new MailboxAddress ("Alice", "[email protected]"));
message.Subject = "How you doin?";

var builder = new BodyBuilder ();

// Set the plain-text version of the message text
builder.TextBody = @"Hey Alice,

What are you up to this weekend? Monica is throwing one of her parties on
Saturday and I was hoping you could make it.

Will you be my +1?

-- Joey
";

// We may also want to attach a calendar event for Monica's party...
builder.Attachments.Add (@"C:\Users\Joey\Documents\party.ics");

// Now we just need to set the message body and we're done
message.Body = builder.ToMessageBody ();

Pour plus d'informations, consultez Création de messages .

49
jstedfast