Saltar al pie de página
USANDO IRONPDF

Cómo Enviar un Archivo PDF Generado como Adjunto en un Correo Electrónico desde C# Usando IronPDF

La automatización de la entrega de documentos es un requisito común en las aplicaciones .NET. Ya sea para distribuir facturas, informes o recibos, los desarrolladores necesitan una forma fiable de crear documentos PDF mediante programación y enviarlos directamente por correo electrónico. La posibilidad de enviar documentos PDF como adjuntos de correo electrónico agiliza los flujos de trabajo empresariales y mejora la comunicación con los clientes. En muchas aplicaciones basadas en eventos, como las pulsaciones de botones o las tareas programadas, un método de envío de correo electrónico puede incluso incluir parámetros como la cadena asunto, el objeto remitente y EventArgs como parte del flujo de trabajo del sistema. De este modo, se garantiza la eficacia del proceso incluso cuando se maneja un documento tenue u otros activos generados dinámicamente.

Este tutorial muestra cómo combinar las capacidades de conversión de HTML a PDF de IronPDF con la funcionalidad de correo electrónico de C# y cómo enviar el archivo PDF generado como adjunto en un correo electrónico desde C#. Utilizando C#, los desarrolladores pueden generar un archivo PDF, adjuntarlo a un mensaje de correo y enviar un mensaje a cualquier destinatario en unas pocas líneas de código.

Cómo Enviar Archivo PDF Generado como Adjunto en Correo Electrónico desde C# Usando IronPDF: Imagen 1 - IronPDF

¿Qué herramientas se necesitan para la generación de PDF y el correo electrónico en C#?

Dos componentes hacen posible este flujo de trabajo: una biblioteca de generación de PDF y un mecanismo de envío de correo electrónico. IronPDF gestiona la creación de documentos PDF a partir de contenido HTML, mientras que .NET admite funciones de correo electrónico a través de System.Net.Mail o la moderna biblioteca MailKit.

Instale el paquete NuGet de IronPDF mediante el Explorador de soluciones de Visual Studio o la consola del Administrador de paquetes:

Install-Package IronPdf

Cómo Enviar Archivo PDF Generado como Adjunto en Correo Electrónico desde C# Usando IronPDF: Imagen 2 - Instalación

Para una funcionalidad de correo electrónico moderna, instale MailKit:

Install-Package MailKit

IronPDF utiliza un motor de renderizado basado en Chromium que produce PDF perfectos a partir de HTML, CSS y JavaScript. La biblioteca funciona en entornos Windows, Linux y macOS, y las aplicaciones .NET Core se benefician de la compatibilidad entre plataformas.

Cómo enviar un archivo PDF generado como adjunto en un correo electrónico desde C# utilizando IronPDF: Imagen 3 - Características

¿Cómo pueden los desarrolladores generar un PDF en memoria utilizando C#?

La clase ChromePdfRenderer convierte contenido HTML en documentos PDF. En lugar de guardar el archivo PDF en el disco, el objeto PdfDocument resultante proporciona acceso directo a los datos binarios a través de su propiedad BinaryData o a través de un nuevo MemoryStream mediante su propiedad Stream.

using IronPdf;
// Create a new instance of the renderer
var renderer = new ChromePdfRenderer();
// Generate PDF document from HTML content
string htmlContent = @"
    <h1>Order Confirmation</h1>
    <p>Thank you for your purchase.</p>
    <p>Order Total: $99.99</p>";
PdfDocument PDF = renderer.RenderHtmlAsPdf(htmlContent);
// Access PDF as byte array for file attachment
byte[] pdfBytes = pdf.BinaryData;
using IronPdf;
// Create a new instance of the renderer
var renderer = new ChromePdfRenderer();
// Generate PDF document from HTML content
string htmlContent = @"
    <h1>Order Confirmation</h1>
    <p>Thank you for your purchase.</p>
    <p>Order Total: $99.99</p>";
PdfDocument PDF = renderer.RenderHtmlAsPdf(htmlContent);
// Access PDF as byte array for file attachment
byte[] pdfBytes = pdf.BinaryData;
Imports IronPdf

' Create a new instance of the renderer
Dim renderer As New ChromePdfRenderer()

' Generate PDF document from HTML content
Dim htmlContent As String = "
    <h1>Order Confirmation</h1>
    <p>Thank you for your purchase.</p>
    <p>Order Total: $99.99</p>"
Dim PDF As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)

' Access PDF as byte array for file attachment
Dim pdfBytes As Byte() = PDF.BinaryData
$vbLabelText   $csharpLabel

El método RenderHtmlAsPdf acepta una cadena HTML y devuelve un documento PDF completamente renderizado. La propiedad BinaryData proporciona el contenido del PDF como una matriz de bytes, que es el formato exacto necesario para añadir archivos adjuntos a un mensaje de correo electrónico. Este enfoque evita por completo las operaciones del sistema de archivos, manteniendo el archivo PDF en memoria durante todo el proceso, desde la generación hasta la entrega, como se muestra en la siguiente captura de pantalla.

Resultado

Cómo Enviar Archivo PDF Generado como Adjunto en Correo Electrónico desde C# Usando IronPDF: Imagen 4 - Salida PDF

Para documentos más complejos, IronPDF admite CSS e imágenes externas a través del parámetro opcional BasePath, lo que permite diseños de documentos profesionales con estilo de marca.

Cómo enviar un archivo PDF generado como adjunto en un correo electrónico desde C# utilizando IronPDF: Imagen 5 - Cómo enviar archivo PDF generado como adjunto en correo electrónico desde C# - IronPDF

¿Cómo se adjunta un PDF en memoria a un mensaje de correo electrónico?

MailKit ofrece un enfoque moderno y recomendado por Microsoft para el envío de correos electrónicos en aplicaciones .NET y aplicaciones web. La clase BodyBuilder gestiona los archivos adjuntos aceptando directamente matrices de bytes, lo que facilita la integración con IronPDF.

using IronPdf;
using MailKit.Net.Smtp;
using MailKit.Security;
using MimeKit;
// Generate PDF document with IronPDF
var renderer = new ChromePdfRenderer();
string HTML = "<h1>Monthly Report</h1><p>Generated automatically.</p>";
PdfDocument PDF = renderer.RenderHtmlAsPdf(html);
// Build new email message
var message = new MimeMessage();
message.From.Add(new MailboxAddress("Sender", "sender@example.com"));
message.To.Add(new MailboxAddress("Recipient", "recipient@example.com"));
message.Subject = "Your Report is Ready";
// Create body with PDF attachment
var builder = new BodyBuilder();
builder.TextBody = "Please find your report attached.";
builder.Attachments.Add("Report.pdf", pdf.BinaryData, new ContentType("application", "pdf"));
message.Body = builder.ToMessageBody();
// Send email via SMTP server
using var client = new SmtpClient();
await client.ConnectAsync("smtp.example.com", 587, SecureSocketOptions.StartTls);
await client.AuthenticateAsync("username", "password");
await client.SendAsync(message);
await client.DisconnectAsync(true);
using IronPdf;
using MailKit.Net.Smtp;
using MailKit.Security;
using MimeKit;
// Generate PDF document with IronPDF
var renderer = new ChromePdfRenderer();
string HTML = "<h1>Monthly Report</h1><p>Generated automatically.</p>";
PdfDocument PDF = renderer.RenderHtmlAsPdf(html);
// Build new email message
var message = new MimeMessage();
message.From.Add(new MailboxAddress("Sender", "sender@example.com"));
message.To.Add(new MailboxAddress("Recipient", "recipient@example.com"));
message.Subject = "Your Report is Ready";
// Create body with PDF attachment
var builder = new BodyBuilder();
builder.TextBody = "Please find your report attached.";
builder.Attachments.Add("Report.pdf", pdf.BinaryData, new ContentType("application", "pdf"));
message.Body = builder.ToMessageBody();
// Send email via SMTP server
using var client = new SmtpClient();
await client.ConnectAsync("smtp.example.com", 587, SecureSocketOptions.StartTls);
await client.AuthenticateAsync("username", "password");
await client.SendAsync(message);
await client.DisconnectAsync(true);
Imports IronPdf
Imports MailKit.Net.Smtp
Imports MailKit.Security
Imports MimeKit

' Generate PDF document with IronPDF
Dim renderer As New ChromePdfRenderer()
Dim HTML As String = "<h1>Monthly Report</h1><p>Generated automatically.</p>"
Dim PDF As PdfDocument = renderer.RenderHtmlAsPdf(HTML)

' Build new email message
Dim message As New MimeMessage()
message.From.Add(New MailboxAddress("Sender", "sender@example.com"))
message.To.Add(New MailboxAddress("Recipient", "recipient@example.com"))
message.Subject = "Your Report is Ready"

' Create body with PDF attachment
Dim builder As New BodyBuilder()
builder.TextBody = "Please find your report attached."
builder.Attachments.Add("Report.pdf", PDF.BinaryData, New ContentType("application", "pdf"))
message.Body = builder.ToMessageBody()

' Send email via SMTP server
Using client As New SmtpClient()
    Await client.ConnectAsync("smtp.example.com", 587, SecureSocketOptions.StartTls)
    Await client.AuthenticateAsync("username", "password")
    Await client.SendAsync(message)
    Await client.DisconnectAsync(True)
End Using
$vbLabelText   $csharpLabel

Esta muestra de código crea un ejemplo de trabajo completo del flujo de trabajo de PDF a correo electrónico en una sola operación. El método BodyBuilder.Attachments.Add acepta tres parámetros: el nombre del archivo que verán los destinatarios, la matriz de bytes PDF de IronPDF y el tipo MIME que especifica el formato del archivo adjunto como application/pdf. Los métodos asíncronos garantizan que la operación no bloquee el subproceso de llamada, lo que resulta esencial para las aplicaciones web que gestionan varias solicitudes simultáneas.

El parámetro SecureSocketOptions.StartTls permite la comunicación cifrada con la dirección del servidor SMTP, protegiendo las credenciales y el contenido del cuerpo del correo electrónico durante la transmisión. Sustituya los valores de configuración del cliente SMTP por los valores de configuración de su proveedor de correo electrónico. Ten en cuenta que servicios como Gmail requieren una contraseña de aplicación para la autenticación SMTP.

Cómo enviar un archivo PDF generado como adjunto en un correo electrónico desde C# utilizando IronPDF: Imagen 6 - Compatibilidad multiplataforma

¿Cómo se puede utilizar System.Net.Mail como alternativa para adjuntar archivos?

Para proyectos que utilicen versiones anteriores de .NET o que requieran dependencias mínimas, System.Net.Mail proporciona funcionalidad de correo electrónico integrada. Aunque Microsoft recomienda MailKit para nuevos desarrollos, este enfoque sigue siendo viable para situaciones más sencillas. El siguiente código muestra un ejemplo de trabajo completo utilizando las clases SmtpClient y MailMessage.

using IronPdf;
using System.Net;
using System.Net.Mail;
// Generate PDF document
var renderer = new ChromePdfRenderer();
PdfDocument PDF = renderer.RenderHtmlAsPdf("<h1>Invoice #1001</h1>");
// Create new MailMessage with attachment
using var message = new MailMessage("sender@example.com", "recipient@example.com");
message.Subject = "Invoice Attached";
message.Body = "Your invoice is attached to this email.";
// Attach PDF file from new MemoryStream
var stream = new MemoryStream(pdf.BinaryData);
message.Attachments.Add(new Attachment(stream, "Invoice.pdf", "application/pdf"));
// Send email via SMTP server
using var client = new SmtpClient("smtp.example.com", 587);
client.Credentials = new NetworkCredential("username", "password");
client.EnableSsl = true;
await client.SendMailAsync(message);
using IronPdf;
using System.Net;
using System.Net.Mail;
// Generate PDF document
var renderer = new ChromePdfRenderer();
PdfDocument PDF = renderer.RenderHtmlAsPdf("<h1>Invoice #1001</h1>");
// Create new MailMessage with attachment
using var message = new MailMessage("sender@example.com", "recipient@example.com");
message.Subject = "Invoice Attached";
message.Body = "Your invoice is attached to this email.";
// Attach PDF file from new MemoryStream
var stream = new MemoryStream(pdf.BinaryData);
message.Attachments.Add(new Attachment(stream, "Invoice.pdf", "application/pdf"));
// Send email via SMTP server
using var client = new SmtpClient("smtp.example.com", 587);
client.Credentials = new NetworkCredential("username", "password");
client.EnableSsl = true;
await client.SendMailAsync(message);
Imports IronPdf
Imports System.Net
Imports System.Net.Mail
Imports System.IO

' Generate PDF document
Dim renderer As New ChromePdfRenderer()
Dim PDF As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Invoice #1001</h1>")

' Create new MailMessage with attachment
Using message As New MailMessage("sender@example.com", "recipient@example.com")
    message.Subject = "Invoice Attached"
    message.Body = "Your invoice is attached to this email."

    ' Attach PDF file from new MemoryStream
    Dim stream As New MemoryStream(PDF.BinaryData)
    message.Attachments.Add(New Attachment(stream, "Invoice.pdf", "application/pdf"))

    ' Send email via SMTP server
    Using client As New SmtpClient("smtp.example.com", 587)
        client.Credentials = New NetworkCredential("username", "password")
        client.EnableSsl = True
        Await client.SendMailAsync(message)
    End Using
End Using
$vbLabelText   $csharpLabel

La diferencia clave aquí es la creación de un nuevo MemoryStream a partir de la matriz de bytes antes de adjuntar el archivo PDF. El constructor de la clase Attachment acepta un flujo, un nombre de archivo y un tipo MIME como parámetros. Tanto MailMessage como SmtpClient están envueltos en sentencias using para garantizar la correcta eliminación de recursos una vez finalizado el envío. El método message.Attachments.Add crea un nuevo objeto adjunto a partir del flujo.

Resultado

Cómo Enviar Archivo PDF Generado como Adjunto en Correo Electrónico desde C# Usando IronPDF: Imagen 7 - Salida PDF Generada

Elija MailKit para proyectos nuevos que requieran funciones avanzadas como autenticación OAuth, compatibilidad con IMAP o manejo complejo de MIME. Utilice System.Net.Mail para requisitos más sencillos o cuando sea prioritario minimizar las dependencias externas.

¿Cuáles son las aplicaciones prácticas de los archivos PDF adjuntos a correos electrónicos?

Este patrón de generación de PDF y entrega por correo electrónico admite numerosos escenarios empresariales. La automatización de facturas envía confirmaciones de compra inmediatamente después de que se completen las transacciones. La distribución de informes ofrece análisis programados a las partes interesadas sin intervención manual. La generación de recibos proporciona a los clientes documentación instantánea de sus compras. Cada caso de uso se beneficia de la posibilidad de crear un documento PDF y enviarlo como archivo adjunto automáticamente.

El enfoque en memoria ofrece ventajas sobre las alternativas basadas en archivos. Las aplicaciones evitan la sobrecarga de E/S de disco y eliminan los requisitos de limpieza de archivos temporales. En el caso de las aplicaciones web de alto tráfico, esta eficacia resulta especialmente valiosa.

Las opciones de presentación de IronPDF permiten personalizar los márgenes, los encabezados, los pies de página y el tamaño de las páginas. Los desarrolladores pueden crear documentos profesionales adecuados para las comunicaciones de cara al cliente, incluido el texto sin formato o el contenido del cuerpo del correo electrónico con formato HTML junto con el archivo PDF adjunto.

Conclusión

La combinación de IronPDF con las bibliotecas de correo electrónico de C# crea un flujo de trabajo eficaz para la entrega automatizada de documentos. La propiedad BinaryData de IronPDF proporciona acceso directo al contenido del PDF como una matriz de bytes, mientras que MailKit o System.Net.Mail gestionan la transmisión del correo electrónico sin problemas. Este enfoque mantiene la eficiencia de las operaciones al evitar interacciones innecesarias con el sistema de archivos.

El patrón abarca desde simples correos electrónicos de notificación hasta complejos sistemas de automatización de documentos. Ya sea para crear sistemas de facturación, generadores de informes o herramientas de comunicación con los clientes, este flujo de trabajo de PDF a correo electrónico en memoria proporciona una base sólida. El código de ejemplo completo puede descargarse y adaptarse a los requisitos específicos de cada proyecto.

Inicie una prueba gratuita para explorar las capacidades de generación de PDF de IronPDF, o vea las opciones de licencia para la implementación en producción.

Cómo enviar un archivo PDF generado como adjunto en un correo electrónico desde C# utilizando IronPDF: Imagen 8 - Licencias

Preguntas Frecuentes

¿Cómo puedo enviar un PDF generado como archivo adjunto de correo electrónico en C#?

Con IronPDF, puede enviar fácilmente archivos PDF generados como adjuntos de correo electrónico integrando sus funciones de creación de PDF con las funciones de envío de correo electrónico de .NET.

¿Cuáles son las ventajas de enviar archivos PDF por correo electrónico en aplicaciones .NET?

El envío de archivos PDF por correo electrónico en aplicaciones .NET ayuda a automatizar la entrega de documentos, agilizando los flujos de trabajo empresariales y mejorando la comunicación con los clientes.

¿Puede IronPDF gestionar el contenido dinámico de los archivos PDF adjuntos a correos electrónicos?

Sí, IronPDF es capaz de generar contenido PDF de forma dinámica, por lo que es adecuado para aplicaciones basadas en eventos que requieren el envío de archivos PDF personalizados como archivos adjuntos de correo electrónico.

¿Qué parámetros se utilizan habitualmente en los métodos de envío de correo electrónico con IronPDF?

Los parámetros comunes incluyen el asunto del correo electrónico, la información del remitente y EventArgs, que garantizan un procesamiento eficaz en aplicaciones basadas en eventos.

¿Por qué IronPDF es adecuado para automatizar la entrega de documentos?

IronPDF es adecuado para automatizar la entrega de documentos porque proporciona una creación de PDF fiable y se integra perfectamente con las funciones de envío de correo electrónico de C#.

¿Es posible programar el envío de correos electrónicos en PDF con IronPDF?

Sí, IronPDF puede integrarse en tareas programadas para automatizar el envío de correos electrónicos en PDF en momentos específicos, lo que mejora la eficacia del flujo de trabajo.

¿Es compatible IronPDF con la creación de archivos PDF a partir de diversas fuentes de datos para adjuntarlos a correos electrónicos?

IronPDF admite la creación de archivos PDF a partir de múltiples fuentes de datos, lo que permite a los desarrolladores generar documentos completos para adjuntarlos a correos electrónicos.

¿Cómo mejora IronPDF la comunicación por correo electrónico con los clientes?

Al permitir la generación y el envío de documentos PDF detallados como archivos adjuntos, IronPDF mejora la profesionalidad y la claridad de la comunicación por correo electrónico con los clientes.

¿Puedo utilizar IronPDF para enviar facturas e informes como archivos adjuntos en PDF?

Sí, IronPDF es ideal para generar y enviar facturas, informes y otros documentos como archivos adjuntos en PDF, atendiendo a diversas necesidades empresariales.

¿Qué papel desempeña IronPDF en la mejora de los flujos de trabajo empresariales?

IronPDF mejora los flujos de trabajo empresariales al permitir la creación y distribución fluidas de documentos PDF, reduciendo la intervención manual y los errores.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más