Mengirim Email. Mengirim email secara terprogram menggunakan berbagai layanan Mengirim email dengan lampiran c#

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

Mengirim 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:
", "[email dilindungi]"))( mm.Subject = "Mail Subject"; mm.Body = "Mail Body"; mm.IsBodyHtml = false; menggunakan (SmtpClient sc = new SmtpClient("127.0.mail server dan port jika diperlukan sc.Send(mm ); ) )

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 ", "[email dilindungi]"))( mm.Subjek = "Subjek Surat"; mm.Body = "Badan Surat"; mm.IsBodyHtml = false; menggunakan (SmtpClient sc = new SmtpClient("smtp.gmail.com", 587))( sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(" [email dilindungi]", "GmailPassword"); sc.Send(mm); ) )

Server SMTP: smtp.yandex.ru
Pelabuhan: 25
menggunakan (MailMessage mm = new MailMessage("Name ", "[email dilindungi]"))( mm.Subjek = "Subjek Surat"; mm.Body = "Badan Surat"; mm.IsBodyHtml = false; menggunakan (SmtpClient sc = new SmtpClient("smtp.yandex.ru", 25))( sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(" [email dilindungi]", "YandexPassword"); sc.Kirim(mm); ) )

Server SMTP: smtp.mail.ru
Pelabuhan: 25
menggunakan (MailMessage mm = new MailMessage("Name ", "[email dilindungi]"))( mm.Subjek = "Subjek Surat"; mm.Body = "Badan Surat"; mm.IsBodyHtml = false; menggunakan (SmtpClient sc = new SmtpClient("smtp.mail.ru", 25))( sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(" [email dilindungi]", "MailRuPassword"); sc.Kirim(mm); ) )
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

Ini adalah elemen bentuk yang sangat penting. Di dalamnya, kami menunjukkan bagaimana data akan ditransfer dan ke file mana. Dalam hal ini, semuanya dikirim dengan metode POST ke file send.php. Program dalam file ini, masing-masing, harus menerima data, mereka akan dimuat dalam array posting, dan mengirimkannya ke alamat email yang ditentukan.

Mari kita kembali ke formulir. Baris kedua akan berisi bidang untuk memasukkan nama lengkap. Memiliki kode berikut:

Jenis formulirnya adalah teks, yaitu pengguna dapat memasukkan atau menyalin teks di sini dari keyboard. Parameter nama berisi nama formulir. Dalam hal ini, itu adalah fio, dengan nama inilah semua yang dimasukkan pengguna di bidang ini akan dikirimkan. Parameter placeholder menentukan apa yang akan ditulis di bidang ini sebagai penjelasan.

Baris berikutnya:

Di sini, hampir semuanya sama, tetapi nama bidang ditentukan sebagai email, dan penjelasannya ditentukan bagi pengguna untuk memasukkan alamat email mereka di formulir ini.

Baris berikutnya adalah tombol kirim:

Dan baris terakhir dalam formulir akan menjadi tag

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:



Formulir aplikasi situs web


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

. Formulir harus tertaut ke halaman yang sama, seperti index.php. Saya menambahkan judul halaman ke kode.

Kesalahan umum yang terjadi saat mengirimkan formulir PHP dari situs web

Yang pertama, mungkin kesalahan paling populer, adalah saat Anda melihat halaman putih kosong tanpa pesan. Ini berarti Anda membuat kesalahan dalam kode halaman. Anda perlu mengaktifkan tampilan semua kesalahan di PHP dan kemudian Anda akan melihat di mana kesalahan itu terjadi. Tambahkan ke kode:

ini_set("display_errors","Aktif");
error_reporting("E_ALL");

File send.php hanya boleh dijalankan di server, jika tidak, kode tidak akan berfungsi. Diinginkan bahwa ini bukan server lokal, karena tidak selalu dikonfigurasi untuk mengirim data ke server email eksternal. Jika Anda menjalankan kode di server selain server, maka Anda akan melihat kode PHP tepat di halaman tersebut.

Jadi, untuk pekerjaan yang benar, saya sarankan untuk menempatkan file send.php di hosting situs. Di sana, sebagai aturan, semuanya sudah dikonfigurasi.

Kesalahan umum lainnya adalah ketika pemberitahuan "Pesan berhasil dikirim" muncul, tetapi surat itu tidak sampai ke pos. Dalam hal ini, Anda perlu memeriksa garis dengan hati-hati:

jika (surat(" [email dilindungi]", "Pesan dari situs", "Nama:".$fio.". Email: ".$email ,"Dari: [email dilindungi]\r\n"))

Alih-alih [email dilindungi] harus berupa alamat email yang ingin Anda kirimi surat, tetapi sebagai gantinya[email dilindungi] harus merupakan email yang sudah ada untuk situs ini. Misalnya, untuk situs situs, ini akan menjadi . Hanya dalam hal ini surat dengan data dari formulir akan dikirim.

Komandan Kapal 14 Oktober 2013 pukul 19:29

Mengirim email secara terprogram menggunakan berbagai layanan

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 telah lama usang, dan dimulai dengan Visual Studio 2010, Anda bahkan tidak dapat menambahkan pustaka System.Web tanpa mengetahui jalur lengkap 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 server email Anda, tempat 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:
", "[email dilindungi]"))( mm.Subject = "Mail Subject"; mm.Body = "Mail Body"; mm.IsBodyHtml = false; menggunakan (SmtpClient sc = new SmtpClient("127.0.mail server dan port jika diperlukan sc.Send(mm ); ) )

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 ", "[email dilindungi]"))( mm.Subjek = "Subjek Surat"; mm.Body = "Badan Surat"; mm.IsBodyHtml = false; menggunakan (SmtpClient sc = new SmtpClient("smtp.gmail.com", 587))( sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(" [email dilindungi]", "GmailPassword"); sc.Send(mm); ) )

Server SMTP: smtp.yandex.ru
Pelabuhan: 25
menggunakan (MailMessage mm = new MailMessage("Name ", "[email dilindungi]"))( mm.Subjek = "Subjek Surat"; mm.Body = "Badan Surat"; mm.IsBodyHtml = false; menggunakan (SmtpClient sc = new SmtpClient("smtp.yandex.ru", 25))( sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(" [email dilindungi]", "YandexPassword"); sc.Kirim(mm); ) )

Server SMTP: smtp.mail.ru
Pelabuhan: 25
menggunakan (MailMessage mm = new MailMessage("Name ", "[email dilindungi]"))( mm.Subjek = "Subjek Surat"; mm.Body = "Badan Surat"; mm.IsBodyHtml = false; menggunakan (SmtpClient sc = new SmtpClient("smtp.mail.ru", 25))( sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(" [email dilindungi]", "MailRuPassword"); sc.Kirim(mm); ) )
Jika kotak surat Anda di layanan mail.ru diakhiri dengan inbox.ru, list.ru atau bk.ru, maka alamat server SMTP berubah sesuai (smtp.inbox.ru, smtp.list.ru dan smtp.bk.ru ).

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

Halo. Karena graphomania saya berkembang, saya memutuskan untuk menambahkan artikel lain. Artikel akan, seperti biasa, dengan contoh di C #, tetapi VB "schnik yang kurang lebih terampil akan dengan mudah menulis ulang semua kode di bawah VB.NET.

Mari kita mulai, mungkin

Untuk mengirim E-Mail, kita perlu menggunakan tiga objek. System.Net.Mail.SmtpClient untuk mengirim pesan, System.Net.Mail.MailMessage untuk mewakili pesan, dan System.Net.NetworkCredential untuk mengotorisasi.

Mari kita buat klien:

Var client = new SmtpClient("$Alamat-Server-Surat$", $Server-Server-Port$);

referensi konstruktor:

SmtpClient(host string, port int);

Mari buat instance dari kelas MailMessage:

Var msg = new MailMessage("from", "to");

Sekarang mari kita atur subjek dan isi surat (omong-omong, semuanya bisa diatur di konstruktor). Serta login dan kata sandi untuk klien smtp. Kemudian kami akan mengirim email menggunakan metode Kirim objek klien kami:

Var client = new SmtpClient("smtp.yandex.ru"); var msg = new MailMessage("dari", "ke"); msg.Subjek = "Pesan percobaan saya"; msg.Body = "Halo, sobat! Bayangkan saja, saya baru saja menulis sebuah program luar biasa untuk mengirimkan surat tak berarti ini kepada Anda jutaan kali hanya dengan beberapa klik!"; msg.SubjectEncoding = Pengkodean.UTF8; msg.BodyEncoding = Pengkodean.UTF8; // prioritas msg.Priority = MailPriority.High; // isi pesan dalam html? msg.IsBodyHtml = false; client.Credentials = new NetworkCredential("login", "password"); klien.Kirim(pesan);

Itu saja. Pastikan untuk memasukkan semua informasi yang diperlukan dengan benar.


Komentar()

ruslang02 30

CoolHacker, bolehkah saya meminjam kode ini dari Anda untuk bagian 3 browser web?

Cool Hacker 770 ruslang02 30

Terima kasih, saya akan menggunakannya untuk mengirim tautan melalui email
seperti di Firefox

LetSevi 10

Memuat...
Atas