Saltar al contenido

¿Puedo enviar archivos por correo electrónico usando MailKit?

Este grupo de especialistas luego de ciertos días de trabajo y de recopilar de datos, hemos dado con la respuesta, nuestro deseo es que te resulte útil para tu trabajo.

Solución:

Si. Esto se explica en la documentación y en las preguntas frecuentes.

De las preguntas frecuentes:

¿Cómo creo un mensaje con archivos adjuntos?

Para construir un mensaje con archivos adjuntos, lo primero que debe hacer es crear un multipart/mixed contenedor al que luego querrá agregar el cuerpo del mensaje primero. Una vez que haya agregado el cuerpo, puede agregarle partes MIME que contengan el contenido de los archivos que desea adjuntar, asegurándose de configurar el Content-Disposition valor del encabezado del archivo adjunto. Probablemente también desee configurar el filename parámetro en el Content-Disposition encabezado así como el name parámetro en el Content-Type encabezamiento. La forma más conveniente de hacer esto es simplemente usar la propiedad MimePart.FileName que establecerá ambos parámetros por usted y también establecerá el Content-Disposition valor del encabezado a attachment si aún no se ha establecido en otra cosa.

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. 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;

Una forma más sencilla de construir mensajes con archivos adjuntos es aprovechar la clase 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. 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:UsersJoeyDocumentsparty.ics");

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

Para obtener más información, consulte Creación de mensajes.

@jstedfast trajo una solución bastante buena, aquí hay algunos ejemplos más de formas simples de enviar un archivo como archivo adjunto (documento pdf en este caso, pero se puede aplicar a cualquier tipo de archivo).

var message = new MimeMessage();
// add from, to, subject and other needed properties to your message

var builder = new BodyBuilder();
builder.HtmlBody = htmlContent;
builder.TextBody = textContent;

// you can either create MimeEntity object(s)
// this might get handy in case you want to pass multiple attachments from somewhere else
byte[] myFileAsByteArray = LoadMyFileAsByteArray();
var attachments = new List

    // from file
    MimeEntity.Load("myFile.pdf"),
    // file from stream
    MimeEntity.Load(new MemoryStream(myFileAsByteArray)),
    // from stream with a content type defined
    MimeEntity.Load(new ContentType("application", "pdf"), new MemoryStream(myFileAsByteArray))


// or add file directly - there are a few more overloads to this
builder.Attachments.Add("myFile.pdf");
builder.Attachments.Add("myFile.pdf", myFileAsByteArray);
builder.Attachments.Add("myFile.pdf", myFileAsByteArray , new ContentType("application", "pdf"));

// append previously created attachments
foreach (var attachment in attachments)

    builder.Attachments.Add(attachment);


message.Body = builder.ToMessageBody();

Espero eso ayude.

Acuérdate de que te permitimos interpretar tu experiencia si te fue preciso.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *