Pembaharuan Terakhir: 31.10.2015
SMTP (Simple Mail Transfer Protocol) digunakan untuk mengirim email melalui Internet. Protokol ini menentukan bagaimana server email berinteraksi saat transit Surel.
Untuk bekerja dengan protokol SMTP dan mengirim email di .NET, kelas SmtpClient dari namespace System.Net.Mail dimaksudkan.
Kelas ini mendefinisikan sejumlah properti yang memungkinkan Anda menyesuaikan pengiriman:
Host: server smtp dari mana email dikirim. Misalnya, smtp.yandex.ru
Port: Port yang digunakan oleh server smp. Jika tidak ditentukan, port 25 digunakan secara default.
Kredensial: data autentikasi pengirim
EnableSsl: menentukan apakah akan digunakan protokol SSL saat mengirim
Kelas kunci lain yang digunakan saat mengirim adalah MailMessage . Kelas ini mewakili pesan yang dikirim. Di antara sifat-sifatnya adalah sebagai berikut:
Lampiran: berisi semua lampiran email
Tubuh: langsung teks surat itu
Dari: alamat pengirim. Merupakan objek MailAddress
Kepada: alamat penerima. Juga mewakili objek MailAddress
Subjek: menentukan subjek email
IsBodyHtml: Menunjukkan apakah email mewakili konten dengan kode html
Mari gunakan kelas-kelas ini dan kirim email:
Menggunakan Sistem; menggunakan Sistem.Net; menggunakan Sistem.IO; menggunakan System.Threading.Tasks; menggunakan System.Net.Mail; namespace NetConsoleApp ( class Program ( static void Main(string args) ( // sender - atur alamat dan nama yang ditampilkan dalam surat MailAddress from = new MailAddress(" [email dilindungi]", "Tom"); // kepada siapa kami mengirim MailAddress = new MailAddress(" [email dilindungi]"); // buat objek pesan MailMessage m = new MailMessage(dari, ke); // subjek email m.Subject = "Test"; // teks email m.Body = "
Uji surat dari klien smtp
"; // huruf mewakili kode html m.IsBodyHtml = true; // alamat server smtp dan port tempat kami akan mengirim surat SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587); // login dan kata sandi smtp.Credentials = new NetworkCredential(" [email dilindungi]", "mypassword"); smtp.EnableSsl = true; smtp.Send(m); Console.Read(); ) ) )Untuk mengirim, metode Send() digunakan, di mana objek MailMessage diteruskan.
Kami juga dapat menggunakan versi pengiriman asinkron dengan metode SendMailAsync:
Menggunakan Sistem; menggunakan Sistem.Net; menggunakan Sistem.IO; menggunakan System.Threading.Tasks; menggunakan System.Net.Mail; namespace NetConsoleApp ( Program kelas ( static void Main(string args) ( SendEmailAsync().GetAwaiter(); Console.Read(); ) async statis pribadi Tugas SendEmailAsync() ( MailAddress from = new MailAddress(" [email dilindungi]", "Tom"); MailAddress ke = new MailAddress(" [email dilindungi]"); MailMessage m = new MailMessage(dari, ke); m.Subject = "Tes"; m.Body = "Surat tes kerja klien smtp 2"; SmtpClient smtp = new SmtpClient("smtp.gmail.com" , 587 ); smtp.Credentials = new NetworkCredential(" [email dilindungi]", "mypassword"); smtp.EnableSsl = true; menunggu smtp.SendMailAsync(m); Console.WriteLine("Email terkirim"); ) ) )
Tambah lampiran
Kami dapat melampirkan lampiran ke email menggunakan properti Lampiran. Setiap lampiran mewakili objek System.Net.Mail.Attachment:
Alamat Surat dari = Alamat Surat baru(" [email dilindungi]", "Tom"); MailAddress ke = new MailAddress(" [email dilindungi]"); MailMessage m = new MailMessage(dari, ke); m.Attachments.Add(new Attachment("D://temlog.txt"));
Komandan Kapal 14 Oktober 2013 pukul 19:29Mengirim email secara terprogram menggunakan berbagai layanan
- .bersih,
Sangat sering Anda harus berurusan dengan pengiriman email dari kode program. Anda tidak perlu jauh-jauh mencari contohnya.
Artikel ini adalah petunjuk dan tidak mengungkapkan sesuatu yang baru, tetapi sebelum menulisnya, saya melihat yang serupa di Internet dan cukup terkejut bahwa hampir di mana-mana mereka menawarkan solusi yang tidak berfungsi atau ketinggalan zaman, atau hanya ditulis secara buta huruf.
Hal pertama yang tidak boleh Anda lakukan dengan contoh ini adalah menggunakan System.Web.Mail, yang sudah lama tidak digunakan lagi, dan sejak itu Studio visual 2010 perpustakaan System.Web bahkan tidak dapat ditambahkan tanpa diketahui jalur penuh ke DLL yang sesuai.
Sebaliknya, diusulkan untuk menggunakan perpustakaan System.Net.
menggunakan Sistem.Net; menggunakan System.Net.Mail;
Jadi, yang paling sederhana, juga yang paling penting dan sering digunakan adalah mengirim surat dari Anda server surat Di mana klien SMTP dikonfigurasi. Seperti yang Anda pahami, server dapat berupa server tempat aplikasi berjalan, atau server jarak jauh, tempat Anda memiliki hak untuk mengirim surat tanpa otorisasi tambahan.
Contoh kode untuk mengirim email dari mesin lokal:
Menggunakan layanan surat seperti Gmail, Yandex, Mail.ru, dll. semuanya sama, hanya parameter dengan otorisasi yang ditambahkan.
Server SMTP: smtp.gmail.com
Pelabuhan: 587
menggunakan (MailMessage mm = new MailMessage("Name
Server SMTP: smtp.yandex.ru
Pelabuhan: 25
menggunakan (MailMessage mm = new MailMessage("Name
Server SMTP: smtp.mail.ru
Pelabuhan: 25
menggunakan (MailMessage mm = new MailMessage("Name
kalau sudah Kotak surat pada layanan mail.ru diakhiri dengan inbox.ru, list.ru atau bk.ru, maka alamat server SMTP (smtp.inbox.ru, smtp.list.ru dan smtp.bk.ru) berubah sesuai.
Seperti yang Anda lihat, untuk menggunakan layanan email lain dalam program Anda, Anda hanya perlu mengetahui alamat dan port server SMTP, serta aturan otorisasi.
Harus juga diingat bahwa hampir semua layanan email pihak ketiga memberlakukan batasan jumlah email yang dikirim dalam jangka waktu tertentu.
Tag: email, kirim email, smtp
Salah satu fungsi yang paling banyak diminta di situs ini adalah aplikasi atau formulir pemesanan, yang datanya dikirim ke email pemilik situs. Biasanya, formulir seperti itu sederhana dan terdiri dari dua atau tiga bidang untuk entri data. Bagaimana cara membuat formulir pemesanan seperti itu? Ini akan membutuhkan penggunaan bahasa markup HTML dan bahasa pemrograman PHP.
Bahasa markup HTML itu sendiri sederhana, Anda hanya perlu memikirkan bagaimana dan di mana harus meletakkan tag tertentu. Dengan bahasa pemrograman PHP, segalanya menjadi sedikit lebih rumit.
Tidaklah sulit bagi seorang programmer untuk membuat formulir seperti itu, tetapi beberapa tindakan mungkin tampak sulit bagi pembuat kode HTML.
Membuat formulir pengiriman html
Baris pertama akan berikutnya
Sekarang mari kita gabungkan semuanya.
Sekarang mari buat bidang dalam formulir wajib. Kami memiliki kode berikut:
Buat file yang menerima data dari formulir HTML
Ini akan menjadi file bernama send.php
Di dalam file, pada tahap pertama, Anda perlu menerima data dari larik postingan. Untuk melakukan ini, kami membuat dua variabel:
$fio = $_POST["fio"];
$email = $_POST["email"];
Nama variabel di php diawali dengan tanda $, dan titik koma ditempatkan di akhir setiap baris. $_POST adalah larik tempat data dari formulir diteruskan. Dalam bentuk html, send method method="post" ditentukan. Jadi, dua variabel diambil dari formulir html. Untuk tujuan melindungi situs Anda, Anda perlu melewatkan variabel ini melalui beberapa filter - fungsi php.
Fungsi pertama akan mengonversi semua karakter yang akan coba ditambahkan pengguna ke formulir:
Dalam hal ini, variabel baru di php tidak dibuat, tetapi yang sudah ada digunakan. Yang akan dilakukan filter adalah mengonversi karakter "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
Fungsi kedua menerjemahkan url jika pengguna mencoba menambahkannya ke formulir.
$fio = urldecode($fio);
$email = urldecode($email);
Dengan fungsi ketiga, kami akan menghapus spasi dari awal dan akhir string, jika ada:
$fio = pangkas($fio);
$email = pangkas($email);
Ada fungsi lain yang memungkinkan Anda memfilter variabel php. Penggunaannya bergantung pada seberapa besar Anda takut penyerang akan mencoba menambahkan kode program ke formulir pengiriman data ke email html ini.
Validasi data yang diteruskan dari formulir HTML ke file PHP
Untuk memeriksa apakah kode ini berfungsi, jika data sedang ditransfer, Anda cukup menampilkannya di layar menggunakan fungsi gema:
gema $fio;
gema "
";
gema $email;
Baris kedua di sini diperlukan untuk memisahkan output dari variabel php ke baris yang berbeda.
Mengirim data yang diterima dari formulir HTML ke surat menggunakan PHP
Untuk mengirim data ke surat, Anda perlu menggunakan fungsi surat di PHP.
mail("ke alamat mana yang akan dikirim", "subjek surat", "Pesan (badan surat)","Dari: dari email mana surat itu dikirim \r\n");
Misalnya, Anda perlu mengirimkan data ke email pemilik atau pengelola situs [email dilindungi]
Subjek email harus jelas, dan pesan email harus berisi apa yang telah ditentukan pengguna dalam formulir HTML.
surat(" [email dilindungi]", "Aplikasi dari situs", "Nama:".$fio.". Email: ".$email ,"Dari: [email dilindungi]\r\n");
Anda perlu menambahkan kondisi yang akan memeriksa apakah formulir dikirim menggunakan PHP ke alamat email yang ditentukan.
jika (surat(" [email dilindungi]", "Pesan dari situs", "Nama:".$fio.". Email: ".$email ,"Dari: [email dilindungi]\r\n"))
{
gema "pesan berhasil dikirim";
) kalau tidak (
}
Dengan demikian, kode program file send.php yang akan mengirimkan data formulir HTML ke email akan terlihat seperti ini:
$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = pangkas($fio);
$email = pangkas($email);
// gema $fio;
// gema "
";
// gema $email;
jika (surat(" [email dilindungi]", "Aplikasi dari situs", "Nama:".$fio.". Email: ".$email ,"Dari: [email dilindungi]\r\n"))
( echo "Pesan berhasil terkirim";
) kalau tidak (
echo "terjadi kesalahan saat mengirim pesan";
}?>
Tiga baris untuk memeriksa apakah data diteruskan ke file dikomentari. Jika perlu, mereka dapat dihapus, karena hanya diperlukan untuk debugging.
Tempatkan kode pengiriman formulir HTML dan PHP dalam satu file
Dalam komentar artikel ini, banyak orang bertanya bagaimana membuat formulir HTML dan kode PHP untuk mengirim data ke surat menjadi satu file, bukan dua.
Untuk mengimplementasikan pekerjaan ini, Anda perlu menempatkan kode HTML formulir di file send.php dan menambahkan kondisi yang akan memeriksa keberadaan variabel dalam array POST (array ini diteruskan dari formulir). Artinya, jika variabel dalam array tidak ada, maka Anda perlu menunjukkan formulir kepada pengguna. Jika tidak, Anda perlu mengambil data dari array dan mengirimkannya ke penerima.
Mari kita lihat cara mengubah kode PHP di file send.php:
// periksa apakah ada variabel dalam array POST
if(!isset($_POST["fio"]) dan !isset($_POST["email"]))(
?> ) kalau tidak (
// tampilkan formulir
$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = pangkas($fio);
$email = pangkas($email);
jika (surat(" [email dilindungi]", "Aplikasi dari situs", "Nama:".$fio.". Email: ".$email ,"Dari: [email dilindungi]\r\n"))(
echo "Pesan berhasil terkirim";
) kalau tidak (
echo "Terjadi kesalahan saat mengirim pesan";
}
}
?>
Kami memeriksa keberadaan variabel dalam array POST dengan fungsi isset() PHP. Tanda seru sebelum fungsi ini dalam suatu kondisi berarti negasi. Artinya, jika variabel tidak ada, maka kita perlu menunjukkan bentuk kita. Jika saya tidak memberi tanda seru, maka kondisinya secara harfiah berarti - "jika ada, maka tunjukkan formulirnya". Dan ini salah dalam kasus kami. Secara alami, Anda dapat mengganti namanya menjadi index.php. Jika Anda mengganti nama file, jangan lupa untuk mengganti nama file dan di baris