Passer au contenu du pied de page
UTILISATION DE IRONPDF

Comment envoyer un fichier PDF généré en tant que pièce jointe dans un courriel à partir de C# à l'aide d'IronPDF

L'automatisation de la livraison de documents est une exigence courante dans les applications .NET. Qu'il s'agisse de distribuer des factures, des rapports ou des reçus, les développeurs ont besoin d'un moyen fiable de créer des documents PDF par programmation et de les envoyer directement par courrier électronique. La possibilité d'envoyer des documents PDF sous forme de pièces jointes par courrier électronique permet de rationaliser les flux de travail des entreprises et d'améliorer la communication avec les clients. Dans de nombreuses applications événementielles, telles que les clics sur des boutons ou les tâches programmées, une méthode d'envoi de courrier électronique peut même inclure des paramètres tels que l'objet de la chaîne, l'expéditeur de l'objet et les EventArgs dans le cadre du flux de travail du système. Cela garantit l'efficacité de votre processus, même lorsque vous traitez un document dim ou d'autres actifs générés dynamiquement.

Ce tutoriel montre comment combiner les capacités de conversion HTML vers PDF d'IronPDF avec la fonctionnalité de courrier électronique C# et comment envoyer le fichier PDF généré en tant que pièce jointe dans un courrier électronique à partir de C#. À l'aide de C#, les développeurs peuvent générer un fichier PDF, le joindre à un message électronique et envoyer un courriel à n'importe quel destinataire en seulement quelques lignes de code.

Comment envoyer un fichier PDF généré en tant que pièce jointe dans un e-mail depuis C# à l'aide d'IronPDF : Image 1 - IronPDF

Quels sont les outils nécessaires à la génération de PDF et à l'envoi de courriels en C#;?

Deux composants rendent ce flux de travail possible : une bibliothèque de génération de PDF et un mécanisme d'envoi d'e-mails. IronPDF gère la création de documents PDF à partir de contenu HTML, tandis que .NET prend en charge les fonctionnalités de messagerie électronique par le biais de System.Net.Mail ou de la bibliothèque moderne MailKit.

Installez le package NuGet IronPDF via l'explorateur de solutions de Visual Studio ou la console du gestionnaire de packages :

Install-Package IronPdf

Comment envoyer un fichier PDF généré en tant que pièce jointe dans un e-mail depuis C# à l'aide d'IronPDF : Image 2 - Installation

Pour une fonctionnalité de messagerie moderne, installez MailKit :

Install-Package MailKit

IronPDF utilise un moteur de rendu basé sur Chromium qui produit des PDF parfaits au pixel près à partir de HTML, CSS et JavaScript. La bibliothèque fonctionne dans les environnements Windows, Linux et macOS, et les applications .NET Core bénéficient d'une compatibilité multiplateforme.

Comment envoyer un fichier PDF généré en tant que pièce jointe dans un e-mail depuis C# à l'aide d'IronPDF : Image 3 - Caractéristiques

Comment les développeurs peuvent-ils générer un PDF en mémoire à l'aide de C#?

La classe ChromePdfRenderer convertit le contenu HTML en documents PDF. Plutôt que d'enregistrer le fichier PDF sur le disque, l'objet PdfDocument résultant fournit un accès direct aux données binaires via sa propriété BinaryData ou via un nouveau MemoryStream via sa propriété 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

La méthode RenderHtmlAsPdf accepte une chaîne HTML et renvoie un document PDF entièrement rendu. La propriété BinaryData fournit le contenu du PDF sous la forme d'un tableau d'octets, qui est le format exact nécessaire pour ajouter des pièces jointes à un message électronique. Cette approche permet d'éviter complètement les opérations du système de fichiers, en conservant le fichier PDF en mémoire tout au long du processus, de la génération à la livraison, comme le montre la capture d'écran suivante.

Sortie

Comment envoyer un fichier PDF généré en tant que pièce jointe dans un e-mail depuis C# à l'aide d'IronPDF : Image 4 - Sortie PDF

Pour les documents plus complexes, IronPDF prend en charge css et images externes par le biais du paramètre facultatif BasePath, ce qui permet d'obtenir des mises en page de documents professionnelles avec un style propre à la marque.

Comment envoyer un fichier PDF généré en tant que pièce jointe dans un email depuis C# en utilisant IronPDF : Image 5 - Comment envoyer un fichier PDF généré en tant que pièce jointe dans un courriel à partir de C# - IronPDF

Comment un PDF en mémoire est-il joint à un message électronique ?

MailKit fournit une approche moderne, recommandée par Microsoft, pour l'envoi d'e-mails dans les applications .NET et les applications web. La classe BodyBuilder gère les pièces jointes en acceptant directement les tableaux d'octets, ce qui rend l'intégration avec IronPDF simple.

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

Cet exemple de code crée un exemple de travail complet du flux de travail PDF-to-email en une seule opération. La méthode BodyBuilder.Attachments.Add accepte trois paramètres : le nom du fichier que les destinataires verront, le tableau d'octets PDF provenant d'IronPDF et le type MIME spécifiant le format de la pièce jointe comme application/pdf. Les méthodes asynchrones garantissent que l'opération ne bloque pas le thread appelant, ce qui est essentiel pour les applications web gérant plusieurs requêtes simultanées.

Le paramètre SecureSocketOptions.StartTls permet une communication cryptée avec l'adresse du serveur SMTP, protégeant ainsi les informations d'identification et le contenu du corps du message pendant la transmission. Remplacez les paramètres du client SMTP par les valeurs de configuration de votre fournisseur de messagerie. Notez que des services comme Gmail nécessitent un mot de passe d'application pour l'authentification SMTP.

Comment envoyer un fichier PDF généré en tant que pièce jointe dans un e-mail depuis C# à l'aide d'IronPDF : Image 6 - Compatibilité multiplateforme

Comment System.Net.Mail peut-il être utilisé comme alternative à l'attachement de fichiers ?

Pour les projets utilisant des versions .NET plus anciennes ou nécessitant des dépendances minimales, System.Net.Mail fournit une fonctionnalité de courrier électronique intégrée. Bien que Microsoft recommande MailKit pour les nouveaux développements, cette approche reste viable pour les scénarios plus simples. Le code suivant présente un exemple de travail complet utilisant les classes SmtpClient client et 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 principale différence consiste à créer un nouveau MemoryStream à partir du tableau d'octets avant d'attacher le fichier PDF. Le constructeur de la classe Attachment accepte un flux, un nom de fichier et un type MIME comme paramètres. Le MailMessage et le SmtpClient sont tous deux enveloppés dans des instructions using afin de garantir l'élimination correcte des ressources une fois l'envoi terminé. La méthode message.Attachments.Add crée un nouvel objet pièce jointe à partir du flux.

Sortie

Comment envoyer un fichier PDF généré en tant que pièce jointe dans un e-mail depuis C# à l'aide d'IronPDF : Image 7 - Sortie PDF générée

Choisissez MailKit pour les nouveaux projets nécessitant des fonctionnalités avancées telles que l'authentification OAuth, la prise en charge IMAP ou la gestion complexe des MIME. Utilisez System.Net.Mail pour des besoins plus simples ou lorsque la réduction des dépendances externes est une priorité.

Quelles sont les applications pratiques des pièces jointes PDF pour les courriels ?

Ce modèle de génération de PDF et d'envoi d'e-mails prend en charge de nombreux scénarios commerciaux. L'automatisation des factures envoie des confirmations d'achat immédiatement après la fin des transactions. La distribution de rapports fournit des analyses planifiées aux parties prenantes sans intervention manuelle. La génération de reçus fournit aux clients une documentation instantanée de leurs achats. Chaque cas d'utilisation bénéficie de la possibilité de créer un document PDF et de l'envoyer automatiquement en pièce jointe.

L'approche en mémoire offre des avantages par rapport aux solutions basées sur les fichiers. Les applications évitent les surcharges d'E/S sur disque et éliminent les besoins de nettoyage des fichiers temporaires. Cette efficacité est particulièrement précieuse pour les applications web à fort trafic.

Les options de rendu d'IronPDF permettent de personnaliser les marges, les en-têtes, les pieds de page et la taille des pages. Les développeurs peuvent créer des documents professionnels adaptés aux communications avec les clients, y compris le contenu du corps de l'e-mail en texte brut ou au format HTML, parallèlement à la pièce jointe au PDF.

Conclusion

La combinaison d'IronPDF et de bibliothèques de messagerie C# permet de créer un flux de travail efficace pour l'envoi automatisé de documents. La propriété BinaryData d'IronPDF permet d'accéder directement au contenu d'un PDF sous la forme d'un tableau d'octets, tandis que MailKit ou System.Net.Mail gèrent la transmission des courriels de manière transparente. Cette approche permet d'assurer l'efficacité des opérations en évitant les interactions inutiles avec le système de fichiers.

Le modèle va de simples courriels de notification à des systèmes complexes d'automatisation de documents. Qu'il s'agisse de créer des systèmes de facturation, des générateurs de rapports ou des outils de communication avec les clients, ce flux de travail PDF-to-email en mémoire constitue une base solide. Le code d'exemple complet peut être téléchargé et adapté aux besoins spécifiques du projet.

Démarrez un essai gratuit pour explorer les capacités de génération de PDF d'IronPDF, ou voyez les options de licence pour un déploiement en production.

Comment envoyer un fichier PDF généré en tant que pièce jointe dans un e-mail depuis C# à l'aide d'IronPDF : Image 8 - Licence

Questions Fréquemment Posées

Comment puis-je envoyer un PDF généré en tant que pièce jointe à un courriel en C# ?

En utilisant IronPDF, vous pouvez facilement envoyer des fichiers PDF générés en tant que pièces jointes à des courriels en intégrant ses capacités de création de PDF aux fonctions d'envoi de courriels de .NET.

Quels sont les avantages de l'envoi de fichiers PDF par courrier électronique dans les applications .NET ?

L'envoi de fichiers PDF par courrier électronique dans les applications .NET permet d'automatiser la livraison de documents, de rationaliser les flux de travail des entreprises et d'améliorer la communication avec les clients.

IronPDF peut-il gérer le contenu dynamique des PDF pour les pièces jointes aux courriels ?

Oui, IronPDF est capable de générer dynamiquement du contenu PDF, ce qui le rend adapté aux applications événementielles qui nécessitent l'envoi de PDF personnalisés en pièces jointes de courriels.

Quels sont les paramètres couramment utilisés dans les méthodes d'envoi de courriels avec IronPDF ?

Les paramètres courants comprennent l'objet de l'e-mail, les informations relatives à l'expéditeur et les EventArgs, qui garantissent un traitement efficace dans les applications pilotées par les événements.

Pourquoi IronPDF est-il adapté à l'automatisation de la diffusion de documents ?

IronPDF est adapté à l'automatisation de l'envoi de documents car il permet une création fiable de PDF et s'intègre de manière transparente aux capacités d'envoi de courriels de C#.

Est-il possible de programmer l'envoi de PDF par email avec IronPdf ?

Oui, IronPDF peut être intégré à des tâches planifiées pour automatiser l'envoi de courriels PDF à des moments précis, améliorant ainsi l'efficacité du flux de travail.

IronPDF prend-il en charge la création de PDF à partir de diverses sources de données pour les pièces jointes aux courriels ?

IronPDF prend en charge la création de PDF à partir de plusieurs sources de données, ce qui permet aux développeurs de générer des documents complets pour les pièces jointes aux courriels.

Comment IronPDF améliore-t-il la communication par courriel avec ses clients ?

En permettant la génération et l'envoi de documents PDF détaillés en pièces jointes, IronPDF renforce le professionnalisme et la clarté des communications par courriel avec les clients.

Puis-je utiliser IronPDF pour envoyer des factures et des rapports sous forme de pièces jointes au format PDF ?

Oui, IronPDF est idéal pour générer et envoyer des factures, des rapports et d'autres documents sous forme de pièces jointes PDF, répondant ainsi à divers besoins professionnels.

Quel rôle joue IronPDF dans l'amélioration des flux de travail des entreprises ?

IronPDF améliore les flux de travail des entreprises en permettant la création et la distribution transparentes de documents PDF, réduisant ainsi les interventions manuelles et les erreurs.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite