Di ASP, Anda dapat mengirim email sederhana dengan memanggil komponen CDONTS. Perbedaannya adalah di .Net Framework, komponen ini dienkapsulasi ke dalam namespace System.Web.Mail.
Program pengiriman email yang umum adalah sebagai berikut:
<%@ Impor Namespace="System.Web.Mail" %>
<skrip runat="server">
MailMessage mail=Pesan Surat baru();
mail.From=" [email protected] ";
mail.To=" [email protected] ";
mail.BodyFormat=MailFormat.Teks;
mail.Body="ujian smtp mail.";
mail.Subject="ru oke?";
SmtpMail.SmtpServer="localhost";
SmtpMail.Kirim(mail);
</skrip>
Biasanya, sistem memanggil server virtual SMTP default yang disertakan dengan IIS untuk mengirim email. Namun, kita sering menemukan pesan kesalahan ini:
Server menolak satu atau lebih alamat penerima. Respons server adalah: 550 5.7.1 Tidak dapat menyampaikan untuk [email protected]
Alasan kesalahan ini bukan hanya kemungkinan alamat yang salah, tetapi juga kemungkinan kesalahan alamat. Ada alasan penting lainnya. Seperti disebutkan di atas, IIS tidak memiliki fungsi email sebenarnya, tetapi hanya menggunakan "server virtual SMTP" untuk meneruskan email. Di MSDN, ada tip berikut:
Jika server SMTP lokal Anda (termasuk dalam Windows 2000 dan Windows Server 2003) berada di belakang firewall yang memblokir lalu lintas SMTP langsung (melalui port 25), Anda perlu mencari tahu apakah ada smart host yang tersedia di jaringan Dapat digunakan untuk menyampaikan pesan SMTP yang ditujukan ke Internet.
Host cerdas adalah server SMTP yang meneruskan email keluar yang dikirim langsung ke Internet dari server SMTP internal. Host pintar harus dapat terhubung ke jaringan internal dan Internet untuk berfungsi sebagai gateway email.
Buka pembatasan server virtual SMTP default-Properti-Akses-Relai. Anda dapat melihat bahwa fungsi penerusan atau relai ini dibatasi. Dalam daftar batasan, tambahkan alamat IP host yang perlu menggunakan server ini untuk menyelesaikan masalah yang disebutkan di atas.
Jika Anda tidak menggunakan server virtual SMTP yang disertakan dengan IIS tetapi menggunakan server email asli lainnya, seperti IMail, Exchange, dll., Anda sering mengalami masalah karena server memerlukan otentikasi pengirim (ESMTP). Saat menggunakan server yang memerlukan verifikasi identitas pengirim, kesalahan akan terjadi:
Server menolak satu atau lebih alamat penerima. Respons server adalah: 550 bukan host lokal ckocoo.com, bukan gateway
Di masa lalu, saya mengalami ini di ASP Tidak ada kemungkinan untuk menyelesaikan masalah. Kami hanya dapat menggunakan komponen CDO (komponen induk CDONTS) secara langsung:
conf.Fields[CdoConfiguration.cdoSMTPAuthenticate].Value=CdoProtocolsAuthentication.cdoBasic;
conf.Fields[CdoConfiguration.cdoSendUserName].Value="brookes";
conf.Fields[CdoConfiguration.cdoSendPassword].Value="XXXXXXX";
Di .Net Framework 1.1, persyaratan ini jelas telah dipertimbangkan. Koleksi Fields telah ditambahkan ke komponen MailMessage untuk meningkatkan identitas pengirim di server email ESMTP dengan mudah. Masalah verifikasi. Namun cara ini hanya berlaku untuk versi .Net Framework 1.1, bukan versi .Net Framework 1.0. Tata cara pengiriman email dengan autentikasi pengirim adalah sebagai berikut:
<%@ Impor Namespace="System.Web.Mail" %>
<skrip runat="server">
MailMessage mail=Pesan Surat baru();
mail.From=" [email protected] ";
mail.Kepada=" [email protected] ";
mail.BodyFormat=MailFormat.Teks;
mail.Body="ujian smtp mail.";
mail.Subject="ru oke?";
mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/smtpauthenticate ", "1"); //otentikasi dasar
mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/sendusername ", "brookes" //tetapkan nama pengguna Anda di sini
mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/sendpassword ", "walkor"); //atur kata sandi Anda di sini
SmtpMail.SmtpServer="lsg.moon.net";
SmtpMail.Kirim(mail);
</skrip>
Dengan metode ini, Anda tidak perlu lagi bergantung pada komponen pihak ketiga seperti Jmail dan EasyMail, tetapi cukup gunakan SmtpMai untuk menyelesaikan pengiriman email!