Heim >Backend-Entwicklung >C++ >Warum bekomme ich einen Fehler, wenn ich `mailMessage.to` und` MailMessage.from` zugewiesen habe?

Warum bekomme ich einen Fehler, wenn ich `mailMessage.to` und` MailMessage.from` zugewiesen habe?

Barbara Streisand
Barbara StreisandOriginal
2025-01-25 19:06:10965Durchsuche

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

Fehlerbehebung bei schreibgeschützten Eigenschaften in MailMessage für den SMTP-E-Mail-Versand

Das Problem:

Beim Versenden von E-Mails über SMTP werden häufig die Klassen MailMessage und SmtpClient verwendet. Ein häufiger Fehler tritt auf, wenn versucht wird, den Eigenschaften To und From von MailMessage direkt Werte zuzuweisen. Diese Eigenschaften sind schreibgeschützt, was zu einem Zuweisungsfehler führt.

Der falsche Ansatz (und warum er scheitert):

Der folgende Codeausschnitt veranschaulicht den fehlerhaften Ansatz:

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

Der Fehler tritt auf, weil MailMessage.To und MailMessage.From nicht für die direkte Zuweisung nach der Objekterstellung vorgesehen sind.

Die Lösung:

Der richtige Weg, die Empfänger- und Absenderadressen festzulegen, besteht darin, sie direkt an den MailMessage Konstruktor:

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

Dieser Ansatz initialisiert die Eigenschaften To und From während der Objektinstanziierung korrekt und vermeidet so den Fehler bei der Zuweisung schreibgeschützter Eigenschaften. Der vollständig korrigierte Code würde so aussehen:

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

Durch die Verwendung des Konstruktors zum Festlegen dieser Eigenschaften wird der Code fehlerfrei ausgeführt. Denken Sie daran, die Platzhalter-E-Mail-Adressen durch Ihre tatsächlichen Absender- und Empfängeradressen zu ersetzen.

Das obige ist der detaillierte Inhalt vonWarum bekomme ich einen Fehler, wenn ich `mailMessage.to` und` MailMessage.from` zugewiesen habe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn