API Javamail menggunakan kelas javax.mail.message untuk mewakili pesan. Kelas pesan adalah kelas abstrak, jadi kita perlu menggunakan subclass javax.mail.internet.mimemessage kelas untuk membuat objek instance dari kelas pesan. Jika kami membuat pesan teks sederhana, maka kelas Mimemessage dapat memenuhi kebutuhan kami. Namun, jika kita perlu membuat email kompleks yang berisi sumber daya atau lampiran tertanam, kita perlu menggunakan kelas -kelas seperti Mimemessage, javax.mail.internet.imebodypart dan javax.mail.internet.mimemultipart di Javamail API.
1. Kelas Mimemessage mewakili seluruh email
2. Kelas Mimebodypart mewakili pesan MIME dari email
3. Kelas Mimemultipart mewakili pesan MIME gabungan yang terdiri dari beberapa pesan MIME.
Hubungan kerja ketiga kelas ini ditunjukkan pada gambar di bawah ini:
Meskipun pengembang aplikasi biasanya hanya perlu menggunakan tiga kelas utama: Mimemessage, Mimebodypart dan Mimemultipart saat membuat konten email menggunakan Javamailapi, juga perlu untuk memahami hubungan warisan kelas mereka. Gambar berikut mencantumkan hubungan warisan dan metode umum dari ketiga kelas ini.
Selanjutnya, gunakan kelas javax.mail.internet.mimemessage untuk membuat pesan teks sederhana.
Impor java.util.date; impor java.util.properties; impor javax.mail.message; impor javax.mail.Session; import javax.mail.internet.internetAddress; import javax.mail.internet.mimemessage; impor java.io.fileoUptrygeup.Internet; args) melempar Exception {String from = "[email protected]"; String ke = "[email protected]"; String subjek = "tes"; String body = "test !!!"; // Buat sesi sesi sesi objek sesi = session.getDefaultInstance (properti baru ()); // Buat mimemessage objek mimemessage msg = mimemessage baru (sesi); // atur pengirim msg.setFrom (internetAddress baru (dari)); // atur penerima msg.setrecipients (message.recipienttype.to, internetAddress.parse (to)); // atur tanggal pengiriman msg.setsentDate (tanggal baru ()); // atur subjek email msg.setsubject (subjek); // atur badan email konten teks biasa msg.setText (body); // simpan dan hasilkan konten email akhir msg.savechanges (); // tulis konten objek mimemessage ke file msg.writeto (fileoutputStream baru ("c: //test.eml")); }}Kami menggunakan klien email (menggunakan Foxmail di sini) untuk membuka file test.eml di bawah drive C, dan Anda dapat melihat informasi berikut, menunjukkan bahwa email kami telah berhasil dibuat.
Berikut adalah penjelasan singkat tentang beberapa kelas yang muncul di atas
1. Kelas Mimemessage: Di atas memperkenalkan bahwa mimemessage adalah kelas implementasi konkret dari kelas pesan, yang digunakan untuk membuat objek instance dari kelas pesan. Di sini konstruktor melewati objek sesi sebagai parameter;
2. Kelas Sesi: Objek ini digunakan untuk mengumpulkan informasi koneksi jaringan antara klien dan server email dan menentukan informasi lingkungan yang diperlukan untuk menentukan seluruh program surat. Informasi ini disimpan dalam objek sesi sebagai atribut objek sesi. Objek sesi menggunakan objek java.util.properties untuk mendapatkan server email, nama pengguna, informasi kata sandi, dan informasi bersama yang perlu digunakan oleh seluruh aplikasi. Karena konstruktor kelas sesi bersifat pribadi, kami menggunakan metode statis pabrik getDefaultInstance () yang disediakan oleh kelas sesi untuk mendapatkan objek sesi default;
3. Kelas Properties: Kelas ini mewakili set properti persisten, yang digunakan untuk menyimpan informasi pasangan nilai kunci sebagai parameter untuk membuat objek sesi. Di sini satu set kosong dibangun sebagai parameter;
4. InternetAddress Class: Kelas ini adalah subclass dari kelas alamat kelas abstrak, digunakan untuk membuat alamat email;
5. Penerima Kelas: Kelas ini adalah kelas internal dari kelas pesan. Kelas ini memiliki 3 variabel statis. Untuk mewakili penerima, CC mewakili pengirim CC (penerima mengetahui pengirim CC), dan BCC mewakili pengirim rahasia pengirim (penerima tidak tahu pengirim rahasia pengirim).
Email di atas hanya berisi teks sederhana. Kadang -kadang kita perlu menggunakan file HTML untuk memperkaya badan email kita, seperti menggunakan tag HTML untuk mengetikkan badan email, dan menggunakan tag HTML untuk memperkenalkan beberapa gambar atau suara ke dalam badan email. Kode berikut membuat email yang berisi format HTML
Impor java.util.date; impor java.util.properties; impor javax.mail.message; impor javax.mail.Session; import javax.mail.internet.internetaddress; import javax.maileam.mimemessage; impor java.io.fileoutstreutuream; main (string [] args) melempar Exception {String from = "[email protected]"; String ke = "[email protected]"; String subjek = "tes"; String body = "<h4> Selamat datang untuk membaca email ini </h4>"; // Buat sesi sesi sesi objek sesi = session.getDefaultInstance (properti baru ()); // Buat mimemessage objek mimemessage msg = mimemessage baru (sesi); // atur pengirim msg.setFrom (internetAddress baru (dari)); // atur penerima msg.setrecipients (message.recipienttype.to, internetAddress.parse (to)); // atur tanggal pengiriman msg.setsentDate (tanggal baru ()); // atur subjek email msg.setsubject (subjek); // Atur bodi email format html msg.setContent (body, "text/html; charset = gb2312"); // simpan dan hasilkan konten surat akhir msg.savechanges (); // tulis konten objek mimemessage ke file msg.writeto (fileoutputStream baru ("c: //test.eml")); }}Kami akan menggunakan Foxmail untuk membuka test.eml, dan tampilan berikut
Perbedaan dari kode sebelumnya adalah bahwa ketika kami mengatur konten email, kami menggunakan metode SetContent alih -alih metode Settext, dan tentukan jenis MIME dari badan email sebagai teks/html.
Sekarang kami telah belajar membuat email dengan tag HTML, tetapi kadang -kadang kami mungkin perlu memasukkan beberapa gambar ke dalam email untuk mengekspresikan makna kami secara lebih intuitif. Maka kita perlu menggunakan kelas Mimemultipart dan kelas Mimebodypart
Impor java.io.fileoutputStream; impor java.util.properties; impor javax.activation.datahandler; impor javax.activation.fileDataSource; impor javax.mail.message; impor javax.mail.sesi; impor javax.mail.ininternet.interternet. javax.mail.internet.mimemessage; import javax.mail.internet.mimemultipart; kelas publik picturemessage {public static void main (string [] args) melempar pengecualian {string dari = "[email protected]"; // pengirim alamat string ke = "123456@16@[email protected]"; // // alamat penerima string subjek = "email html"; String body = "<a href = http: //www.cnblogs.com>" + "Selamat datang di kebun blog </a> </br>" + "<img src =/" c: //dog.jpg/ ">"; Session session = session.getDefaultInstance (properti baru ()); // Buat objek mimemessage dan atur berbagai bidang header pesan mimemessage pesan = mimemessage baru (sesi); message.setFrom (InternetAddress baru (dari)); message.setrecipients (message.recipienttype.to, internetAddress.parse (to)); pesan.setsubject (subjek); // Buat objek Mimemultipart dengan subtipe "terkait". Mimemultipart multipart = mimemultipart baru ("terkait"); /** Buat objek mimebodypart yang mewakili tubuh html dan tambahkan ke objek mimemultipart yang dibuat sebelumnya*/ mimebodypart htmlbodypart = mimebodypart baru (); htmlbodypart.setContent (body, "text/html; charset = gb2312"); multipart.addbodypart (htmlbodypart); /** Buat objek Mimebodypart yang mewakili konten gambar dan tambahkan ke objek Mimemultipart yang dibuat sebelumnya*/ mimebodypart gifbodypart = mimebodypart baru (); FileDataSource fds = new FileDataSource ("c: //dog.jpg"); gifbodypart.setFileName (fds.getName ()); gifbodypart.setDataHandler (datahandler baru (fds)); multipart.addbodypart (gifbodypart); /** Atur objek Mimemultipart ke konten seluruh pesan, perhatikan metode SaveChanges untuk pembaruan*/ pesan.setContent (multipart); message.savechanges (); // Tulis konten objek mimemessage ke file pesan.writeto (FileOutputStream baru ("c: //picturemessage.eml")); }}Kode tampaknya agak rumit. Anda dapat melihat diagram hubungan dari Mimemessage, Mimemultipart, dan Mimebodypart yang disebutkan di atas. Ini akan memudahkan untuk memahami kode di atas. Kami membuka picturemessage.eml dan melihat informasi berikut, yang menunjukkan bahwa kami telah berhasil membuat email dengan gambar, dan gambar disertakan dalam email dalam bentuk lampiran.
Mimemultipart memiliki dua konstruktor.
mimemultipart publik () mimemultipart publik (subtipe string)
Yang pertama adalah Parameterless, dan objek instance default memiliki tipe MIME dicampur. Yang kedua merumuskan tipe untuk membuat objek instance dari kelas Mimemultipart. Ada tiga jenis yang umum digunakan: campuran, terkait, dan alternatif. Hubungan kombinasi dari ketiga jenis ini dalam pantomim adalah sebagai berikut:
Sekarang kami menggunakan hubungan kombinasi yang ditunjukkan di atas untuk membuat pesan dengan lampiran dan sumber daya tertanam di dalam tubuh.
Impor java.io.fileoutputStream; impor java.util.properties; impor javax.activation.datahandler; impor javax.activation.fileDataSource; impor javax.mail.message; impor javax.mail.sesi; impor javax.mail.ininternet.interternet. javax.mail.internet.mimemessage; impor javax.mail.internet.mimemultipart; kelas publik ComplexMessage {public static void main (string [] args) melempar pengecualian {session sesi = session.getDefaultInstance (properti baru ()); Mimemessage pesan = createMessage (sesi); message.writeto (FileOutputStream baru ("c: //complexmessage.eml")); } public static mimemessage createMessage (sesi sesi) melempar Exception {string from = "[email protected]"; // pengirim Alamat string ke = "[email protected]"; // alamat penerima string subjek = "email html"; // Email subjek string body = "<a href = http: //www.cnblogs.com>" + "Selamat datang di taman blog </a> </br>" + "<img src =/" c: //dog.jpg/ ">"; Pesan mimemessage = mimemessage baru (sesi); message.setFrom (InternetAddress baru (dari)); message.setrecipients (message.recipienttype.to, internetAddress.parse (to)); pesan.setsubject (subjek); // Buat setiap objek Mimebodypart yang mewakili badan pesan dan lampiran mimebodypart contentPart = createContent (body, "c: //dog.jpg"); // Lampiran berikut dapat berupa video atau audio mimebodypart lampiran1 = createAttachment ("c: //music.mp3"); Mimebodypart lampiran2 = createAttachment ("c: //video.avi"); // Buat objek mimemultipart untuk menggabungkan badan pesan dan lampiran mimemultipart allMultipart = mimemultipart baru ("campuran"); allmultipart.addbodypart (contentPart); allmultipart.addbodypart (lampiran1); allmultipart.addbodypart (lampiran2); // Atur seluruh konten email ke final gabungan mimemultipart objek pesan.setContent (allMultipart); message.savechanges (); kembali pesan; } public static mimebodypart createContent (string body, string filename) melempar Exception { /** Buat objek Mimemultipart yang mewakili pesan MIME gabungan, dan objek Mimebodypart yang mana objek Mimemultipart disimpan* / mimebodypart contentPart = mimebodypart baru (); Mimemultipart contentmultipart = mimemultipart baru ("terkait"); /** Buat objek mimebodypart untuk menyimpan tubuh html dan simpan ke mimemultipart*/ mimebodypart htmlbodypart = mimebodypart baru (); htmlbodypart.setContent (body, "text/html; charset = gb2312"); ContentMultipart.addbodypart (htmlbodypart); /** Buat objek mimebodypart untuk menyimpan gambar dan menyimpannya ke mimemultipart*/ mimebodypart gifbodypart = mimebodypart baru (); FileDataSource fds = FileDataSource baru (nama file); gifbodypart.setDataHandler (datahandler baru (fds)); ContentMultipart.addbodypart (gifbodypart); // simpan objek Mimemultipart ke objek Mimebodypart ContentPart.setContent (ContentMultipart); mengembalikan bagian konten; } public static mimebodypart createAttachment (string fileName) melempar Exception {// Buat objek mimebodypart yang menyimpan lampiran, dan tambahkan konten lampiran dan informasi yang sesuai mimebodypart lampiran = mimebodypart baru (); FileDataSource fds = FileDataSource baru (nama file); lampiran.setDataHandler (DataHandler baru (FDS)); lampiran.setFileName (fds.getName ()); kembalikan lampiran; }}Buka file complexmessage.eml dan Anda dapat melihat konten berikut:
Sekarang kami telah belajar cara membuat email teks biasa, email dengan format HTML, dan email dengan gambar dan lampiran tertanam. Artikel berikutnya akan memperkenalkan cara mengirim email javamail memulai dengan artikel ketiga Kirim email
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.