Menghantar E-mel dengan Java

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan melihat pengiriman e-mel dengan dan tanpa lampiran - menggunakan perpustakaan mel Java inti.

2. Penyediaan dan Ketergantungan Projek

Untuk artikel ini, kami akan menggunakan projek berasaskan Maven sederhana dengan ketergantungan pada perpustakaan mel Java:

 javax.mail mail 1.5.0-b01 

Versi terbaru boleh didapati di sini.

3. Menghantar Teks Biasa dan E-mel HTML

Pertama, kita perlu mengkonfigurasi perpustakaan dengan bukti kelayakan penyedia perkhidmatan e-mel kita. Kemudian, kami akan membuat Sesi yang akan digunakan dalam membina mesej kami untuk dihantar.

Konfigurasi adalah melalui objek Java Properties :

Properties prop = new Properties(); prop.put("mail.smtp.auth", true); prop.put("mail.smtp.starttls.enable", "true"); prop.put("mail.smtp.host", "smtp.mailtrap.io"); prop.put("mail.smtp.port", "25"); prop.put("mail.smtp.ssl.trust", "smtp.mailtrap.io");

Dalam konfigurasi hartanah di atas, kami mengkonfigurasi hos e-mel sebagai Mailtrap dan menggunakan port yang disediakan oleh perkhidmatan juga.

Sekarang mari kita melangkah lebih jauh dengan membuat sesi dengan nama pengguna dan kata laluan kami:

Session session = Session.getInstance(prop, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } });

Nama pengguna dan kata laluan diberikan oleh penyedia perkhidmatan mel bersama parameter host dan port.

Sekarang kita mempunyai objek Sesi mel , mari buat Mime Message untuk menghantar:

Message message = new MimeMessage(session); message.setFrom(new InternetAddress("[email protected]")); message.setRecipients( Message.RecipientType.TO, InternetAddress.parse("[email protected]")); message.setSubject("Mail Subject"); String msg = "This is my first email using JavaMailer"; MimeBodyPart mimeBodyPart = new MimeBodyPart(); mimeBodyPart.setContent(msg, "text/html"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(mimeBodyPart); message.setContent(multipart); Transport.send(message);

Dalam coretan di atas, kami pertama kali membuat contoh mesej dengan sifat yang diperlukan - ke, dari dan subjek. Diikuti oleh mimeBodyPart yang mempunyai pengekodan teks / html, kerana pesan kami digayakan dalam HTML.

Perkara seterusnya yang kami lakukan adalah membuat contoh objek MimeMultipart yang dapat kami gunakan untuk membungkus mimeBodyPart yang kami buat.

Akhir sekali, kami menetapkan berbilang objek sebagai kandungan kami mesej dan menggunakan send () untuk pengangkutan objek untuk melakukan mel yang menghantar.

Jadi, kita boleh mengatakan bahawa mimeBodyPart terkandung dalam multipart yang terdapat dalam mesej. Oleh itu, multipart boleh mengandungi lebih daripada satu mimeBodyPart .

Ini akan menjadi tumpuan bahagian seterusnya.

4. Menghantar E-mel Dengan Lampiran

Seterusnya, untuk menghantar lampiran, kita hanya perlu membuat MimeBodyPart lain dan melampirkan fail ke dalamnya:

MimeBodyPart attachmentBodyPart = new MimeBodyPart(); attachmentBodyPart.attachFile(new File("path/to/file"));

Kita kemudian boleh menambahkan bahagian badan baru ke objek MimeMultipart yang kita buat sebelumnya:

multipart.addBodyPart(attachmentBodyPart);

Itu sahaja yang perlu kita lakukan.

Sekali lagi, kami menetapkan contoh multipart sebagai kandungan objek mesej dan akhirnya kami akan menggunakan send () untuk melakukan pengiriman surat .

5. Kesimpulan

Sebagai kesimpulan, kami telah melihat bagaimana menggunakan perpustakaan mel Java asli untuk menghantar e-mel walaupun dengan lampiran.

Seperti biasa, kod sumber lengkap boleh didapati di Github.