Beberapa pengiriman dan verifikasi pengguna
Berikut ini pertama -tama akan memperkenalkan cara mengirim email ke beberapa penerima dan cara menggunakan objek Authenticators untuk mencapai otentikasi pengguna.
Saat menentukan penerima, kita dapat memiliki dua cara untuk menentukannya. Blog sebelumnya untuk sementara menentukan penerima saat mengirim email, dan sebenarnya dapat ditentukan dalam objek pesan.
message.addrecipient (message.recipienttype.to, new internetAddress ("[email protected]")); Ini hanya untuk mengirimkannya ke satu penerima, tetapi bagaimana menghadapinya dengan banyak penerima? Ada juga dua cara untuk menghadapinya.
1. Saat mengirim email, metode transportasi sendMessage () menggunakan array untuk menentukan penerima. Saat ini, kita hanya perlu menambahkan lebih banyak alamat penerima untuk menyelesaikannya.
2. Saat menggunakan objek pesan untuk menambahkan penerima, kita dapat menggunakan metode Parse (String String) dari objek InternetAddress. Metode ini mengembalikan array InternetAddress, yang juga dapat dikirim ke beberapa penerima.
Kita tahu bahwa ketika mengembangkan Javamail, kita harus melakukan verifikasi otorisasi. Tujuan verifikasi otorisasi adalah untuk mencegah orang lain mengirim email secara sewenang -wenang dan mengurangi generasi spam.
Kami dapat memeriksa saat mendapatkan objek sesi. Ada dua metode dalam objek sesi:
Kedua metode memiliki authenticator parameter umum, yang merupakan objek autentikator. Objek Authenticator membantu pengguna untuk memverifikasi informasi dan menyelesaikan verifikasi otorisasi. Ada metode getPasswordAuthentication () dalam objek Authenticator. Metode ini mengembalikan objek ATASWORDAuthentication. Ada dua metode dalam objek aMPRTYAuthentication: getPassword () dan getUserName () itu berarti kami merangkum kata sandi dan nama pengguna dalam objek aMPRTYAuthentication. Melalui dua metode ini, kita bisa mendapatkan nama pengguna dan kata sandi. Verifikasi informasi pengguna dapat diselesaikan.
Contohnya adalah sebagai berikut:
kelas publik javaMail_02 {public static void main (string [] args) melempar pengecualian {properties props = new properties (); props.setProperty ("mail.smtp.auth", "true"); props.setProperty ("mail.transport.protocol", "smtp"); props.setProperty ("mail.host", "smtp.163.com"); Session session = session.getInstance (props, new Authenticator () {Protected PasswordAuthentication getPasswordAuthentication () {return new passwordAuthentication ("******", "*********");}}); session.setDebug (true); Pesan msg = mimemessage baru (sesi); msg.setfrom (InternetAddress baru ("[email protected]")); msg.setsubject ("Program Tes Javamail ..."); msg.setContent ("<span style = 'color: red'> Ini adalah program uji Javamail kedua saya .... </span>", "Teks/html; charset = gbk"); //msg.setrecipient(recipientType.to, alamat baru [] {new internetAddress ("1111 @@ qq.com"), new internetAddress ("[email protected]")}); msg.setrecipients (recepementType.to, internetAddress.parse ("[email protected], [email protected]"))); Transport.Send (MSG); }} Email dengan gambar dan lampiran
Dalam email yang sebenarnya, kami umumnya melibatkan struktur email yang lebih kompleks, seperti lampiran, gambar, lagu, dll. Pada saat ini, kami harus memiliki pemahaman yang jelas tentang struktur email. Sebelum mengembangkan email gabungan, Anda harus memiliki pemahaman tertentu tentang struktur email gabungan.
Gambar di atas menunjukkan keseluruhan struktur email gabungan, dan kita dapat melihat bahwa email yang kompleks terdiri dari banyak bagian. Ini memiliki header dan tubuh, tetapi tubuh tidak sesederhana sebelumnya, tetapi terdiri dari beberapa bagian. Kepala perlu berfungsi sebagai indikasi, yang perlu menjelaskan jenis pemisah apa yang akan digunakan untuk memisahkan teks dan hubungan kombinasi apa yang digunakan antara bagian -bagian teks. Untuk email di atas terdiri dari tiga bagian, masing -masing dengan kepala dan tubuhnya sendiri, dan bagian pertama juga terdiri dari dua bagian.
Hubungan Kombinasi Email Komposit:
Ada banyak kombinasi antara bagian teks utama. Hubungan kombinasi adalah sebagai berikut:
Alternatif: Pilih hubungan. Teks dan hypertext di atas adalah hubungan pilihan.
Terkait: Hubungan Afiliasi. Jika teks hypertext di atas menampilkan gambar, maka ketika kami mengirim email, kami harus menyertakan gambar dalam email, yang disebut sumber daya tertanam, yang untuk hypertext. Jadi ada hubungan antara mereka berdua.
Campuran: hubungan campuran. Teks polos, hypertext dan sumber daya tertanam membentuk keseluruhan dan mereka disandingkan dengan lampiran, dan ada hubungan campuran antara keduanya.
API untuk Struktur Organisasi Surat Komposit:
Kelas Mimemessage mewakili seluruh email.
Kelas Mimebodypart mewakili pesan MIME dari email tersebut.
Kelas Mimemultipart mewakili pesan MIME gabungan yang terdiri dari beberapa pesan MIME.
Contoh berikut: Email berisi dua lampiran, bagian utama termasuk teks biasa dan hypertext, dan hypertext berarti menampilkan gambar. Kode sumber adalah sebagai berikut:
kelas publik javaMail_03 {public static void main (string [] args) melempar pengecualian {properties props = new properties (); props.setProperty ("mail.smtp.auth", "true"); props.setProperty ("mail.transport.protocol", "smtp"); props.setProperty ("mail.host", "smtp.163.com"); Session session = session.getInstance (props, new Authenticator () {protected passwordAuthentication getPasswordAuthentication () {return new passwordAuthentication ("***", "******");}}); Pesan pesan = mimemessage baru (sesi); message.setsubject ("Program Tes Javamail Ketiga"); Message.setFrom (new internetAddress ("/" "+mimeutility.encodetext (" chen ming ")+"/"<[email protected]>")); message.setrecipients (recepementType.to, alamat baru [] {new internetAddress ("[email protected]")}); // Surat teks mimemultipart multipart = mimemultipart baru ("campuran"); message.setContent (multipart); /** Konten pesan* mencakup satu badan email dan dua lampiran*/ mimebodypart konten = mimebodypart baru (); // kirim konten mimebodypart lampiran1 = mimebodypart () baru; // lampiran 1 mimebodypart attach2 = mimebodypart baru (); // Lampiran 2 // Tambahkan Konten Email ke Multipart Multipart.AddBodyPart (Konten); multipart.addbodypart (attch1); multipart.addbodypart (attch2); // atur lampiran 1 DataSource ds1 = new FileDataSource ("g: // ebook // oracle password.txt"); DataHandler DH1 = DataHandler baru (DS1); lampiran1.setDataHandler (DH1); lampiran1.setFileName ("oracle.txt"); // atur lampiran 2 DataSource ds2 = new FileDataSource ("g: //ebook//account.txt"); DataHandler DH2 = DataHandler baru (DS2); lampiran2.setDataHandler (DH2); lampiran2.setFileName (mimeutility.encodetext ("Account.txt")); /** Atur konten (teks) ---- adalah badan yang kompleks* termasuk teks html dan menampilkan gambar*/ mimemultipart bodymultipart = mimemultipart baru ("terkait"); content.setContent (BodyMultipart); // Bangun teks mimebodypart htmlbody = mimebodypart baru (); Mimebodypart gifbody = mimebodypart baru (); bodymultipart.addbodypart (htmlbody); bodymultipart.addbodypart (gifbody); // Atur gambar DataSource gifds = new FileDataSource ("f: //picture//picture//4.jpg"); DataHandler gifdh = DataHandler baru (GIFDS); gifbody.setDataHandler (gifdh); gifbody.setheader ("content-id", "<"+gifds.getName ()+">"); //gifbody.setheader("content-location "," http://www.itcast.cn/logo.gif "); // atur html body htmlbody.setContent ("<span style = 'color: red; font-size: 16px'> Ini adalah tes javamail ketiga saya! Ini termasuk lampiran dan gambar, yang sedikit rumit ... </span> <br>" + "gambar yang ditampilkan <mg src = 'cid: 4.Jpg'/"/> "Text/pext/pext/pext/pext src = 'cid: 4.Jpg'/"/>>>> message.savechanges (); // Hasilkan Transport Email.Send (pesan); }}