Menyelesaikan masalah Sifat Baca Sahaja dalam MailMessage
untuk Penghantaran E-mel SMTP
Isunya:
Menghantar e-mel melalui SMTP selalunya melibatkan penggunaan kelas MailMessage
dan SmtpClient
. Ralat biasa timbul apabila cuba memberikan nilai terus kepada sifat To
dan From
MailMessage
. Sifat ini adalah baca sahaja, yang membawa kepada ralat tugasan.
Pendekatan yang Salah (dan mengapa ia gagal):
Coretan kod berikut menunjukkan pendekatan yang cacat:
<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>
Ralat berlaku kerana MailMessage.To
dan MailMessage.From
tidak direka bentuk untuk tugasan langsung selepas penciptaan objek.
Penyelesaian:
Cara yang betul untuk menetapkan alamat penerima dan pengirim adalah dengan menghantarnya terus ke dalam MailMessage
pembina:
<code class="language-csharp">MailMessage mail = new MailMessage("[email protected]", "[email protected]"); // ... rest of the email sending code ...</code>
Pendekatan ini memulakan sifat To
dan From
dengan betul semasa penyerahan objek, mengelakkan ralat penetapan sifat baca sahaja. Kod lengkap yang diperbetulkan akan kelihatan seperti ini:
<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>
Dengan menggunakan pembina untuk menetapkan sifat ini, kod akan dilaksanakan tanpa ralat. Ingat untuk menggantikan alamat e-mel pemegang tempat dengan alamat pengirim dan penerima sebenar anda.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat Semasa Menugaskan kepada `MailMessage.To` dan `MailMessage.From`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!