net mail enviar correo con archivo adjunto adjuntar c# asp.net webforms email-attachments

c# - mail - Generar archivo HTML en tiempo de ejecución y enviar como archivo adjunto de correo electrónico



enviar correo c# con archivo adjunto (2)

Dado que está utilizando WebForms, recomendaría representar su hoja de registro en un Control como una cadena , y luego adjuntarlo a un MailMessage .

La parte de renderización se vería así:

public static string GetRenderedHtml(this Control control) { StringBuilder sbHtml = new StringBuilder(); using (StringWriter stringWriter = new StringWriter(sbHtml)) using (HtmlTextWriter textWriter = new HtmlTextWriter(stringWriter)) { control.RenderControl(textWriter); } return sbHtml.ToString(); }

Si tiene controles editables ( TextBox , DropDownList , etc.), deberá reemplazarlos por Labels o Literals antes de llamar a GetRenderedHtml() . Vea esta publicación en el blog para ver un ejemplo completo.

Aquí está el ejemplo de MSDN para los archivos adjuntos :

// Specify the file to be attached and sent. // This example assumes that a file named Data.xls exists in the // current working directory. string file = "data.xls"; // Create a message and set up the recipients. MailMessage message = new MailMessage( "[email protected]", "[email protected]", "Quarterly data report.", "See the attached spreadsheet."); // Create the file attachment for this e-mail message. Attachment data = new Attachment(file, MediaTypeNames.Application.Octet); // Add time stamp information for the file. ContentDisposition disposition = data.ContentDisposition; disposition.CreationDate = System.IO.File.GetCreationTime(file); disposition.ModificationDate = System.IO.File.GetLastWriteTime(file); disposition.ReadDate = System.IO.File.GetLastAccessTime(file); // Add the file attachment to this e-mail message. message.Attachments.Add(data);

Tengo un requisito del proyecto de que debemos adjuntar una hoja de registro con formato HTML a un correo electrónico que se envía a un usuario. No quiero que la hoja de registro sea parte del cuerpo. Prefiero no usar HTMLTextWriter o StringBuilder porque la hoja de registro es bastante compleja.

¿Hay algún otro método que no mencione o una herramienta que lo haga más fácil?

Nota: He trabajado con la clase MailDefinition y he creado una plantilla, pero no he encontrado una manera de hacer esto un archivo adjunto si eso es posible.