Gunakan Javamail untuk mengirim email, paket JAR yang diperlukan (silakan unduh file sumber Javamail, halaman unduhan resmi: http://www.oracle.com/technetwork/java/javamail/index-138643.html):
mailapi.jar. Mendefinisikan API antarmuka yang digunakan untuk mengirim dan menerima email;
smtp.jar. Berisi kelas yang digunakan untuk mengirim email;
pop3.jar. Termasuk kelas yang digunakan untuk menerima email;
Protokol yang biasanya kami gunakan untuk mengirim email adalah protokol SMTP, dan protokol yang kami gunakan untuk menerima email adalah protokol POP3. Atau, kami langsung menambahkan Mail.jar ke proyek, yang berisi semua antarmuka dan kelas untuk Java mengirim dan menerima surat.
Kelas yang umum digunakan:
Kirim email
Di bawah ini, pertama -tama saya akan mencantumkan contoh uji kecil paling sederhana dari mengirim email di java:
impor java.util.properties; impor javax.mail.address; impor javax.mail.message; impor javax.mail.messagingException; impor javax.mail.Session; impor javax.mail.transport; impor javax.mail.internet.internetaddress; impor javax.mail.internet.mimemessage; /** * * qq (mail.qq.com): server POP3 (port 995) SMTP Server (port 465 atau 587). * */ kelas publik demo1 {/ ** * @param args * @throws MessagingException */ public static void main (string [] args) melempar MessagingException {string sendusername = "[email protected]"; String sendPassword = "pwd"; Properti properti = properti baru (); Properties.setProperty ("mail.smtp.auth", "true"); // Server perlu mengotentikasi properti.setProperty ("mail.transport.protocol", "smtp"); // menyatakan port yang digunakan untuk mengirim sesi email = session.getInstance (properti); session.setDebug (true); // Setuju untuk mencetak informasi percakapan dengan server pada konsol pesan utas saat ini = mimemessage baru (sesi); // buat pesan pesan yang dikirim.setText ("Halo, saya Champion.wong!"); // Informasi Pesan Konten. transport.connect ("smtp.126.com", 25, sendusername, sendpassword); // Sambungkan transport server pengirim.sendMessage (pesan, alamat baru [] {new internetAddress ("[email protected]")}); // terima email transport.close (); }}Secara umum, kami menggunakan Authenticator untuk merangkum nama pengguna dan kata sandi, yang buram! Jadi:
impor javax.mail.authenticator; impor javax.mail.message; impor javax.mail.messagingException; impor javax.mail.passwordAuthentication; impor javax.mail.Session; impor javax.mail.transport; impor javax.mail.internet.address; impor javax.mail.internet.internetaddress; impor javax.mail.internet.mimemessage; impor junit.framework.testcase; /*** Javamail Kirim email* @Author Championship wong* message.addrecipient (pesan penerima, alamat alamat); Tentukan peran penerima dan penerima saat mengirim email* message.recipienttype.to penerima* message.recipienttype.cc CC, yaitu, salin satu ke orang lain saat mengirim email, tanpa membalas! Namun, penerima di atas dapat melihat siapa yang Anda salin ke * message.recipienttype.bcc mengirim secara diam -diam, dan itu juga untuk mengirim salinan ke orang lain saat mengirim email. Namun, tidak seperti hal di atas, penerima tidak dapat melihat siapa yang secara diam -diam Anda berikan kepada * */ kelas publik demo2 memperluas testcase {private static final string sendusername = "[email protected]"; // nama pengguna yang perlu dikendarai dengan email yang menghubungkan ke dalam email yang menghubungkan ke server yang menghubungkan ke server yang menghubungkan ke server yang menghubungkan ke server yang membutuhkan email ke server yang membutuhkan email ke server yang membutuhkan email ke server. "smtp"; // port yang digunakan untuk mengirim surat pribadi string final statis sendhostaddress = "smtp.126.com"; // Alamat server yang digunakan untuk mengirim email tes public void () melempar alamat alamat, pesan pesan {properties = properti baru (); properties.setProperty ("mail.smtp.auth", "true"); // Server perlu mengotentikasi properti.setProperty ("mail.transport.protocol", sendprotocol); // menyatakan port yang digunakan untuk mengirim mail properties.setProperty ("mail.host", sendhostaddress = the mail address); sending for mail/ sending for mail ("mail.host", sendhostaddress = the mail address/ the maildress ("mail.host", sendhostaddress = the mail wamat Session.getInstance (Properties, new Authenticator () {Protected PasswordAuthentication getPasswordAuthentication () {return New PasswordAuthentication (sendusername, sendPassword);}}); session.setDebug (true); // cetak informasi waktu-nyata tentang mengirim email di pesan latar belakang = mimemessage baru (sesi); message.setFrom (InternetAddress baru ("[email protected]")); message.setsubject ("Demo2JavAcode Mengirim uji email, menggunakan authenticator"); // Atur Topic Message.setrecipients (message.recipienttype.to, internetAddress .parse ("[email protected], [email protected]"));/ kirim pesan. .parse ("[email protected]")); // pesan CC .setContent ("<span style =" font-size: 20px; warna: #ffccff "mce_style =" font-size: 20px; warna: #ffccff "> Jika Anda melihatnya, itu membuktikan bahwa uji ini berhasil! "Teks/html; charset = gbk"); Transport.send (pesan); // Kirim email}} Kami mengirim email yang relatif kompleks, termasuk lampiran, gambar, dan teks:
impor java.io.filenotfoundException; impor java.io.fileoutputStream; impor java.io.ioException; impor java.io.outputStream; impor java.util.properties; impor javax.activation.datahandler; impor javax.activation.datasource; impor javax.activation.fileDataSource; impor javax.mail.authenticator; impor javax.mail.messagingException; impor javax.mail.passwordAuthentication; impor javax.mail.Session; impor javax.mail.transport; impor javax.mail.message.recipienttype; impor javax.mail.internet.internetaddress; impor javax.mail.internet.imebodypart; impor javax.mail.internet.mimemessage; impor javax.mail.internet.mimemultipart; impor javax.mail.internet.mimeutility; /** * * @Author Administrator Mr XP.Wang * Mimemultipart Kontainer umum email adalah multipart, yang mendefinisikan metode untuk menambah dan menghapus berbagai bagian email. * Namun, ini adalah kelas abstrak, dan subclass -nya Mimemultipart perlu digunakan untuk objek mimemessage* mimebodypart adalah subclass dari bodypart yang secara khusus digunakan untuk mimemessage. The MimeBodyPart object represents a * every part of the mimeMultipart object* MimeUtility.encodeText(String cn) is used to solve the problem of Chinese garbled code in the header information in the email* */ public class Demo3_test { public static void main(String[] args) throws Exception { Properties properties = new Properties(); Properties.setProperty ("mail.smtp.auth", "true"); // Server perlu mengotentikasi properti.setProperty ("mail.transport.protocol", "smtp"); // menyatakan port yang digunakan untuk mengirim mail properties.setProperty ("mail.host", "smtp.sm. Session.getInstance (properti, authenticator baru () {string sendusername = "[email protected]"; string sendPassword = "pwd"; lindung kata sandi GetPasswordAuthentication () {return new AwasstandAuthentication (sendusername, sendPassword);}; session.setDebug (true); Mimemessage msg = mimemessage baru (sesi); // menyatakan badan email msg.setFrom (new internetAddress ("/" "+mimeutility.encodetext (" Mr xp.wang ")+"/"<[email protected]>")); msg.setsubject ("Ini adalah email rumit pertama saya"); // Tetapkan subjek email msg.setrecipients (mimemessage.recipienttype.to, internetAddress.parse (mimeutility.encodetext ("wang Xiangpan ")+" <[email protected]>, "+mimeutility.encodetext (" sanmao ")+" <[email protected]> ")); MimeMultipart msgMultipart = new MimeMultipart("mixed");// Indicate the combination relationship of the email, the mixed relationship msg.setContent(msgMultipart);// Set the email body MimeBodyPart attach1 = new MimeBodyPart();// Attachment 1 MimeBodyPart attach2 = new MimeBodyPart();// Attachment 2 Mimebodypart content = mimebodypart baru (); // teks email, campuran (gambar + teks) // atur lampiran dan teks ke dalam badan email ini msgmultipart.addbodypart (attch1); msgmultipart.addbodypart (attch2); msgmultipart.addbodypart (konten); // Atur DataSource lampiran pertama DS1 = new fileDataSource ("f: /accp5.0/file/ssh configuration.txt"); // Tentukan sumber data dari lampiran datahandler dh1 = datahandler baru (ds1); // informasi lampiran lampiran attch1.setDataDandler (ds1); // informasi lampiran attachment attch1.setDataDandler (ds1); attch1.setFileName ("ssh.txt"); // Atur DataSource lampiran kedua ds2 = new fileDataSource ("Resource/48.jpg"); // Tentukan sumber data dari lampiran DataHandler dh2 = DataDler baru (DS2); // Informasi lampiran lampiran2.setDataHandler (dh2); // specify attachment attachment. // Atur teks email mimemultipart bodymultipart = mimemultipart baru ("terkait"); // konten ketergantungan.setContent (bodymultipart); // tentukan tubuh mimebodypart htmlpart = mimebodypart baru (); Mimebodypart gifpart = mimebodypart baru (); bodymultipart.addbodypart (htmlpart); bodymultipart.addbodypart (gifpart); DataSource gifds = new fileDataSource ("Resource/48.jpg"); // Atur gambar teks DataHandler gifdh = DataHandler baru (GIFDS); gifpart.setheader ("lokasi konten", "http://mimg.126.net/logo/126logo.gif"); gifpart.setDataHandler (gifdh); // Atur gambar teks htmlpart.setContent ("Saya hanya di sini untuk membuat kecap, ini adalah foto gambar saya! <img src ="/"mce_src ="/"" http://mimg.126.net/net/ "/" "http://mimg.126.net/net/" "" http://mimg.126.net/net/net/ "" "Teks/html; charset = gbk"); // Atur teks msg.savechanges (); // simpan email // Simpan email sebagai file outputStream ops = fileoutputStream baru ("c: /users/administrator/desktop/test.eml"); msg.writeto (ops); ops.close (); Transport.Send (MSG); }} Menerima email
Contoh: Rose mengumpulkan email terbaru.
Impor java.util.date; impor java.util.properties; impor javax.mail.folder; impor javax.mail.message; impor javax.mail.messagingException; impor public.mail.nosuchprovidexception; impor javax.mail.sesesion; main (string [] args) {string protocol = "pop3"; boolean isssl = true; String host = "pop.163.com"; int port = 995; String username = "[email protected]"; String password = "rose"; Properti props = properti baru (); props.put ("mail.pop3.ssl.enable", isssl); props.put ("mail.pop3.host", host); props.put ("mail.pop3.port", port); Session session = session.getDefaultInstance (props); Toko Toko = NULL; Folder folder = null; coba {store = session.getStore (protokol); Store.Connect (nama pengguna, kata sandi); folder = store.getFolder ("inbox"); folder.open (folder.read_only); int size = folder.getMessageCount (); Pesan pesan = folder.getMessage (size); String from = message.getFrom () [0] .toString (); String subjek = message.getSubject (); Tanggal tanggal = message.getSentDate (); System.out.println ("From:" + From); System.out.println ("Subjek:" + Subjek); System.out.println ("Tanggal:" + Tanggal); } catch (nosuchproviderexception e) {e.printstacktrace (); } catch (MessagingException e) {E.PrintStackTrace (); } akhirnya {coba {if (folder! = null) {folder.close (false); } if (store! = null) {store.close (); }} catch (MessagingException e) {E.PrintStackTrace (); }} System.out.println ("Diterima!"); }}