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:
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 ...
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:
MailMessage mail = new MailMessage("[email protected]", "[email protected]"); // ... rest of the email sending 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:
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);
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!