中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

如何從Java應(yīng)用程序發(fā)送電子郵件

發(fā)布于:2021-01-07 17:21:45

0

127

0

Java smtp 電子郵件

您是否知道您的Java應(yīng)用程序可以與任何可用的SMTP服務(wù)器集成以發(fā)送電子郵件?本教程介紹了如何通過Java應(yīng)用程序發(fā)送電子郵件,從設(shè)置到生成郵件,再到通過Gmail SMTP發(fā)送郵件。Jakarta Mail(以前稱為Java Mail)可以發(fā)送和接收HTML電子郵件,甚至帶有附件和圖像。

本教程將幫助您掌握使用本地Java庫通過SMTP從Java應(yīng)用程序發(fā)送電子郵件的過程。盡管它很簡單,但是Jakarta Mail(以前稱為JavaMail)使您可以使用SMTP,POP3或IMAP協(xié)議發(fā)送和接收HTML電子郵件,包括圖像和附件。

從設(shè)置到生成郵件,再通過Gmail SMTP發(fā)送郵件,我們將進(jìn)行整個過程。

雅加達(dá)郵件設(shè)置

如果您在2019年7月之前開始使用Java,那么Jakarta Mail名稱可能聽起來有點陌生。但是從那時起,Java軟件已成為Jakarta品牌的一部分。

要安裝郵件包,應(yīng)將jakarta.mail.jar文件添加到CLASSPATH環(huán)境中。如果使用Java EE或Jakarta EE,則此文件已包含在軟件包中。否則,您可以從Jakarta Mail API官方頁面下載它。

另外,您可以使用Maven依賴項來實現(xiàn)它,如下所示:

<dependencies>  <dependency>  <groupId>com.sun.mail</groupId>  <artifactId>javax.mail</artifactId>  <version>1.6.2</version>  </dependency>  </dependencies>

如何使用Gmail配置電子郵件發(fā)送

您的Java應(yīng)用程序可以與任何可用的SMTP服務(wù)器集成以發(fā)送電子郵件。在這里,我們將演示如何配置Gmail(常用選項之一)。

您應(yīng)該做的唯一技巧就是允許您的Gmail帳戶訪問。最簡單的方法是在此處啟用“允許安全性較低的應(yīng)用程序”選項。推薦的安全選項是使用oAuth2身份驗證。但是,這是一種更高級的方法,需要其他配置。首先,您需要從Google Developers Console獲取訪問令牌。有關(guān)詳細(xì)說明和說明,請參閱Google文檔。

然后,要通過Jakarta Mail訪問Gmail服務(wù)器,您需要滿足以下參數(shù):

import java.util.*;  import javax.mail.*;  import javax.mail.internet.*;  import javax.activation.*;

本文稍后將介紹訪問Gmail SMTP的簡單方法。

要繼續(xù),我們需要導(dǎo)入相關(guān)的類并添加屬性,尤其是:

  • SendEmail公共類,用于指定電子郵件頭

  • javax.mail.PasswordAuthentication類,用于正確的身份驗證

  • javax.mail.Transport用于發(fā)送消息

  • javax.mail.internet.MimeMessage

  • SMTP設(shè)置(主機,端口,用戶名和密碼),它們定義為props.put

  • message.setText用于簡單的純文本消息

這是完整的代碼示例:

package com.example.smtp; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendEmail {  public static void main(String[] args) {  // Add recipient  String to = "test@example.com"; // Add sender  String from = "myusername@gmail.com";  final String username = "myusername@gmail.com";//your Gmail username   final String password = "mypassword";//your Gmail password String host = "smtp.gmail.com"; Properties props = new Properties();  props.put("mail.smtp.auth", "true");  props.put("mail.smtp.starttls.enable", "true");   props.put("mail.smtp.host", host);  props.put("mail.smtp.port", "587"); // Get the Session object  Session session = Session.getInstance(props,  new javax.mail.Authenticator() {  protected PasswordAuthentication getPasswordAuthentication() {  return new PasswordAuthentication(username, password);  }  }); try {  // Create a default MimeMessage object  Message message = new MimeMessage(session);    message.setFrom(new InternetAddress(from));    message.setRecipients(Message.RecipientType.TO,  InternetAddress.parse(to));    // Set Subject  message.setSubject("Hi JAXenter");    // Put the content of your message  message.setText("Hi there,we are just experimenting with JavaMail here"); // Send message  Transport.send(message); System.out.println("Sent message successfully...."); } catch (MessagingException e) {  throw new RuntimeException(e);  }  } }

帶有圖片和附件的HTML電子郵件

在大多數(shù)情況下,電子郵件通知包含格式,文件附件或圖像。為此,您必須添加HTML內(nèi)容。在Jakarta Mail中,您應(yīng)該使用SendHTMLEmail類MimeMessage.setContent,并指出text / html類型。最好在MimeMultipart(“ alternative”)對象中同時包含HTML和純文本。

在電子郵件中嵌入圖像的最簡單方法(例如,公司徽標(biāo))是將其上傳到可靠的外部服務(wù)器,并在HTML代碼中引用它,如下所示:

package com.example.smtp;package com.example.smtp;import java.util.Properties; import javax.mail.Message;import javax.mail.MessagingException; import javax.mail.PasswordAuthentication;import javax.mail.Session; import javax.mail.Transport;import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendHTMLEmail {    public static void main(String[ ] args) {       String to = "johndoe@gmail.com";       String from = "yourmail@example.com";       final String username = "yourlogin";       final String password = "yourpassword";       String host = "smtp.example.com";       Properties props = new Properties();       props.put("mail.smtp.auth", "true");       props.put("mail.smtp.starttls.enable", "true");       props.put("mail.smtp.host", host);       props.put("mail.smtp.port", "2525");       // Get the Session object       Session session = Session.getInstance(props,          new javax.mail.Authenticator() {             protected PasswordAuthentication getPasswordAuthentication() {                return new PasswordAuthentication(username, password);             }  });       try {             // Create a default MimeMessage object             Message message = new MimeMessage(session);     message.setFrom(new InternetAddress(from));  message.setRecipients(Message.RecipientType.TO,               InternetAddress.parse(to));  message.setSubject("HTML message with an image and attachment");     // Put your HTML content here as well as refer to the hosted image     message.setContent(               "<p><img src="https://yourserver.com/yourlogo.png" alt="img" /></p> +      <p>Hey, do you like our logo?</p>",              "text/html");     // Send message     Transport.send(message);     System.out.println("Sent message successfully....");       } catch (MessagingException e) {     e.printStackTrace();    throw new RuntimeException(e);       }    } }

另一種方法是使用CID附件。這有點復(fù)雜,因為您應(yīng)該創(chuàng)建MIME多部分/相關(guān)消息,然后引用HTML正文中的圖像。如果圖像不是存儲在圖像文件中,而是存儲在內(nèi)存中的字節(jié)數(shù)組中,則也可以使用此方法。

Multipart multipart = new MimeMultipart("related"); MimeBodyPart htmlPart = new MimeBodyPart();  //reference to your image to the HTML body <img src="cid:some-image-cid" alt="img" />  htmlPart.setText(messageBody, "utf-8", "html");  multipart.addBodyPart(htmlPart); MimeBodyPart imgPart = new MimeBodyPart();  // for the image stored in the file  imgPart.attachFile(imageFile);  //for the image stored in a byte array in memory  // imgPart.setDataHandler(new DataHandler(  // new ByteArrayDataSource(bytes, "image/whatever"))); imgPart.setContentID("<some-image-cid">");  multipart.addBodyPart(imgPart); message.setContent(multipart);

最后,讓我們在郵件中附加一個文件。不管使用哪種文件類型,都可以通過如下方式將attachFile方法放入MimeBodyPart中來完成:

public static void setAttachment(Message message, String filename) throws MessagingException {  // create a multipart message  Multipart multipart = new MimeMultipart();  BodyPart messageBodyPart = new MimeBodyPart(); // specify your file  DataSource source = new FileDataSource(filename);  messageBodyPart.setDataHandler(new DataHandler(source));  messageBodyPart.setFileName(filename); //Add the file part  multipart.addBodyPart(messageBodyPart);   message.setContent(multipart);

進(jìn)一步的步驟

在此簡短指南中,我們解釋了使用Jakarta Mail發(fā)送電子郵件的工作方式,并演示了最常見的示例。如果您想深入了解,我們建議您遵循Jakarta Mail FAQ。

如果您需要制作更復(fù)雜的HTML電子郵件模板,那么最好使用Spring框架和您更喜歡的模板引擎之一。