Mengunduh dan mengunggah lampiran, mengirim pesan teks dan mengirim email semuanya adalah fungsi yang sangat umum digunakan dalam program. Saya merekam unggahan dan unduhan file dan mengirim pesan teks. Karena saya sibuk baru -baru ini, saya tidak punya waktu untuk melakukan fungsi pengiriman email. Sekarang saya akhirnya berhasil mengirim email ke email QQ dengan 163 kotak surat. Berikut ini adalah kode yang relevan. Untuk detailnya, silakan merujuk ke komentar dalam kode:
tes paket; impor java.util.arraylist; impor java.util.date; impor java.util.list; impor java.util.properties; impor java.util.regex.matcher; impor java.util.regex.pattern; impor javax.mail.address; impor javax.mail.authenticator; impor javax.mail.bodypart; impor javax.mail.message; impor javax.mail.passwordAuthentication; impor javax.mail.Session; impor javax.mail.transport; impor javax.mail.internet.internetaddress; impor javax.mail.internet.imebodypart; impor javax.mail.internet.mimemessage; impor javax.mail.internet.mimemultipart; impor com.sun.mail.util.mailsslsocketfactory; /// */ * // * @author tuzongxun123 // * @description mail kirim kelas tes // */kelas publik sendmailTest {public static void main (string [] args) melempar pengecualian {// informasi konfigurasi properti pro = properti baru (); pro.put ("mail.smtp.host", "smtp.163.com"); pro.put ("mail.smtp.auth", "true"); // SSL Enkripsi MailsslsocketFactory sf = null; sf = mailsslsocketFactory () baru; // atur kepercayaan semua host SF.setTrustAllHosts (true); pro.put ("mail.smtp.ssl.enable", "true"); pro.put ("mail.smtp.ssl.socketfactory", sf); // Bangun sesi untuk mengirim email berdasarkan properti sesi email. Perlu dicatat di sini bahwa nama pengguna tidak dapat sufiks, jika tidak itu tidak akan menjadi nama pengguna. // Perlu juga dicatat bahwa kata sandi di sini bukan kata sandi login dari kotak surat secara normal, tetapi kode otorisasi khusus lain yang dihasilkan oleh klien MailAuthenticator Authorizer = new MailAuthenticator ("tuzongxun123", "kode otorisasi klien"); Session session = session.getInstance (Pro, otorizer); // Bangun informasi email berdasarkan pesan sesi pesan = mimemessage baru (sesi); // Buat Alamat Alamat Pengirim Email dari = InternetAddress baru ("[email protected]"); // atur pengirim pesan email.setFrom (dari); // Verifikasi Daftar Alamat Email Penerima <String> toaddresslist = ArrayList baru <> (); toaddresslist.add ("[email protected]"); StringBuffer buffer = stringBuffer baru (); if (! toaddresslist.isempty ()) {string regex = "^([a-z0-9a-z]+[-| //.]?)+[a-z0-9a-z]@([a-z0-9a-z]+(-[a-z0-9a-z]+)?)+[A-Za, A-Z, Pola p = pola.compile (regex); untuk (int i = 0; i <toaddresslist.size (); i ++) {matcher match = p.matcher (toaddresslist.get (i)); if (match.matches ()) {buffer.append (toaddresslist.get (i)); if (i <toaddresslist.size () - 1) {buffer.append (","); }}}}} String toAddress = buffer.toString (); if (! toAddress.isempty ()) {// Buat alamat penerima dari alamat pesan [] ke = InternetAddress.parse (toaddress); // Atur pesan alamat penerima email. // email subjek // pesan.setsubject ("tes surat java"); message.setsubject ("Mengapa salah"); // email wadah mimemultipart mimemultipart = mimemultipart baru (); // atur html bodypart bodypart = mimebodypart baru (); // Konten email // string htmltext = "tes email java 111"; String htmltext = "kenapa salah"; bodypart.setContent (htmltext, "text/html; charset = utf-8"); mimemultipart.addbodypart (bodypart); // Tambahkan Daftar Lampiran <String> FileAdDressList = ArrayList baru <String> (); fileaddresslist .add ("c: // pengguna // tuzongxun123 // desktop // microsoft office word document.docx" baru); if (fileaddresslist! = null) {bodypart lampiran = null; untuk (int i = 0; i <fileaddresslist.size (); i ++) {if (! fileaddresslist.get (i) .isempty ()) {lampiran = mimebodypart baru (); // Sumber data lampiran Sumber DataSource = new FileDataSource (fileaddresslist.get (i)); // Tambahkan sumber data lampiran ke lampiran badan surat.setDataHandler (DataHandler baru (sumber)); // Atur nama lampiran ke nama file asli lampiran.setFileName (mimeutility.encodetext (sumber .getName ())); mimemultipart.addbodypart (attchpart); }}} message.setContent (mimemultipart); message.setsentDate (tanggal baru ()); // Simpan email pesan.savechanges (); // Kirim email transport.send (pesan); }}} class mailauthenticator memperluas authenticator { / *** nama pengguna* / nama pengguna string privat; / *** Kata sandi*/ kata sandi string pribadi; /*** Buat instance baru MailAuthenticator. * * @param nama pengguna * @param kata sandi */ mailAuthenticator public (string username, string password) {this.userName = userName; this.password = kata sandi; } public string getPassword () {return kata sandi; } @Override Protected PasswordAuthentication getPasswordAuthentication () {return New PasswordAuthentication (nama pengguna, kata sandi); } public string getUserName () {return username; } public void setPassword (kata sandi string) {this.password = kata sandi; } public void setusername (string username) {this.username = username; }}Catatan: Seorang kolega saya menggunakan kode saya untuk menggantinya dengan akun dan kode otorisasi kliennya. Dia melaporkan kesalahan segera setelah dia menjalankannya. Kemudian dia mengatur ulang kode otorisasi klien dari alamat email, dan kesalahan menghilang.
Di atas adalah semua tentang artikel ini, saya harap akan sangat membantu bagi semua orang untuk belajar pemrograman Java.