Maison >développement back-end >C++ >Pourquoi est-ce que j'obtiens une erreur lors de l'attribution à « MailMessage.To » et « MailMessage.From » ?

Pourquoi est-ce que j'obtiens une erreur lors de l'attribution à « MailMessage.To » et « MailMessage.From » ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-25 19:06:10960parcourir

Why Do I Get an Error When Assigning to `MailMessage.To` and `MailMessage.From`?

Dépannage des propriétés en lecture seule dans MailMessage pour SMTP Email Envoi

Le problème:

Envoi des e-mails via SMTP implique souvent l'utilisation des classes MailMessage et SmtpClient. Une erreur commune survient lors de la tentative d'attribution directement des valeurs aux propriétés To et From de MailMessage. Ces propriétés sont en lecture seule, conduisant à une erreur d'attribution.

L'approche incorrecte (et pourquoi elle échoue):

l'extrait de code suivant démontre l'approche défectueuse:

<code class="language-csharp">MailMessage mail = new MailMessage();
mail.To = "[email protected]"; // Error! To is read-only.
mail.From = "[email protected]"; // Error! From is read-only.
// ... rest of the email sending code ...</code>

L'erreur se produit car MailMessage.To et MailMessage.From ne sont pas conçues pour l'attribution directe après la création d'objets.

La solution:

La bonne façon de définir les adresses du destinataire et de l'expéditeur est de les transmettre directement dans le constructeur MailMessage:

<code class="language-csharp">MailMessage mail = new MailMessage("[email protected]", "[email protected]");
// ... rest of the email sending code ...</code>

Cette approche initialise correctement les propriétés To et From pendant l'instanciation de l'objet, en évitant l'erreur d'attribution de propriété en lecture seule. Le code corrigé complet ressemblerait à ceci:

<code class="language-csharp">using System.Net.Mail;

// ... other code ...

MailMessage mail = new MailMessage("[email protected]", "[email protected]");
SmtpClient client = new SmtpClient();
client.Port = 25;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Host = "smtp.gmail.com";
mail.Subject = "this is a test email.";
mail.Body = "this is my test email body";
client.Send(mail);</code>

En utilisant le constructeur pour définir ces propriétés, le code s'exécutera sans erreurs. N'oubliez pas de remplacer les adresses e-mail de l'espace réservé par vos adresses réelles de l'expéditeur et du destinataire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn