Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤和異常

Java 多執行緒

Java 同步

Java 網路

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 和框架

Java 類參考

Java 有用資源

Java - 傳送電子郵件



使用您的 Java 應用程式傳送電子郵件非常簡單,但首先您應該在您的機器上安裝 JavaMail APIJava Activation Framework (JAF)

下載並解壓縮這些檔案,在新建立的頂級目錄中,您將找到這兩個應用程式的許多 jar 檔案。您需要將 mail.jaractivation.jar 檔案新增到您的 CLASSPATH 中。

傳送簡單的電子郵件

這是一個從您的機器傳送簡單電子郵件的示例。假設您的 localhost 已連線到網際網路,並且能夠傳送電子郵件。

示例

// File Name SendEmail.java

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

public class SendEmail {

   public static void main(String [] args) {    
      // Recipient's email ID needs to be mentioned.
      String to = "abcd@gmail.com";

      // Sender's email ID needs to be mentioned
      String from = "web@gmail.com";

      // Assuming you are sending email from localhost
      String host = "localhost";

      // Get system properties
      Properties properties = System.getProperties();

      // Setup mail server
      properties.setProperty("mail.smtp.host", host);

      // Get the default Session object.
      Session session = Session.getDefaultInstance(properties);

      try {
         // Create a default MimeMessage object.
         MimeMessage message = new MimeMessage(session);

         // Set From: header field of the header.
         message.setFrom(new InternetAddress(from));

         // Set To: header field of the header.
         message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

         // Set Subject: header field
         message.setSubject("This is the Subject Line!");

         // Now set the actual message
         message.setText("This is actual message");

         // Send message
         Transport.send(message);
         System.out.println("Sent message successfully....");
      } catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

輸出

編譯並執行此程式以傳送簡單的電子郵件 -

$ java SendEmail
Sent message successfully....

如果要向多個收件人傳送電子郵件,則將使用以下方法指定多個電子郵件 ID -

void addRecipients(Message.RecipientType type, Address[] addresses)
   throws MessagingException

以下是引數的說明 -

  • type - 這將設定為 TO、CC 或 BCC。此處 CC 代表抄送,BCC 代表密送。例如:Message.RecipientType.TO

  • addresses - 這是一個電子郵件 ID 陣列。在指定電子郵件 ID 時,您需要使用 InternetAddress() 方法。

傳送 HTML 電子郵件

這是一個從您的機器傳送 HTML 電子郵件的示例。此處假設您的 localhost 已連線到網際網路,並且能夠傳送電子郵件。

此示例與上一個示例非常相似,只是這裡我們使用 setContent() 方法設定內容,其第二個引數為“text/html”以指定訊息中包含 HTML 內容。

使用此示例,您可以傳送任意大小的 HTML 內容。

示例

// File Name SendHTMLEmail.java

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

public class SendHTMLEmail {

   public static void main(String [] args) {
      // Recipient's email ID needs to be mentioned.
      String to = "abcd@gmail.com";

      // Sender's email ID needs to be mentioned
      String from = "web@gmail.com";

      // Assuming you are sending email from localhost
      String host = "localhost";

      // Get system properties
      Properties properties = System.getProperties();

      // Setup mail server
      properties.setProperty("mail.smtp.host", host);

      // Get the default Session object.
      Session session = Session.getDefaultInstance(properties);

      try {
         // Create a default MimeMessage object.
         MimeMessage message = new MimeMessage(session);

         // Set From: header field of the header.
         message.setFrom(new InternetAddress(from));

         // Set To: header field of the header.
         message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

         // Set Subject: header field
         message.setSubject("This is the Subject Line!");

         // Send the actual HTML message, as big as you like
         message.setContent("<h1>This is actual message</h1>", "text/html");

         // Send message
         Transport.send(message);
         System.out.println("Sent message successfully....");
      } catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

編譯並執行此程式以傳送 HTML 電子郵件 -

輸出

$ java SendHTMLEmail
Sent message successfully....

在電子郵件中傳送附件

這是一個從您的機器傳送帶有附件的電子郵件的示例。此處假設您的 localhost 已連線到網際網路,並且能夠傳送電子郵件。

示例

// File Name SendFileEmail.java

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

public class SendFileEmail {

   public static void main(String [] args) {     
      // Recipient's email ID needs to be mentioned.
      String to = "abcd@gmail.com";

      // Sender's email ID needs to be mentioned
      String from = "web@gmail.com";

      // Assuming you are sending email from localhost
      String host = "localhost";

      // Get system properties
      Properties properties = System.getProperties();

      // Setup mail server
      properties.setProperty("mail.smtp.host", host);

      // Get the default Session object.
      Session session = Session.getDefaultInstance(properties);

      try {
         // Create a default MimeMessage object.
         MimeMessage message = new MimeMessage(session);

         // Set From: header field of the header.
         message.setFrom(new InternetAddress(from));

         // Set To: header field of the header.
         message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));

         // Set Subject: header field
         message.setSubject("This is the Subject Line!");

         // Create the message part 
         BodyPart messageBodyPart = new MimeBodyPart();

         // Fill the message
         messageBodyPart.setText("This is message body");
         
         // Create a multipar message
         Multipart multipart = new MimeMultipart();

         // Set text message part
         multipart.addBodyPart(messageBodyPart);

         // Part two is attachment
         messageBodyPart = new MimeBodyPart();
         String filename = "file.txt";
         DataSource source = new FileDataSource(filename);
         messageBodyPart.setDataHandler(new DataHandler(source));
         messageBodyPart.setFileName(filename);
         multipart.addBodyPart(messageBodyPart);

         // Send the complete message parts
         message.setContent(multipart );

         // Send message
         Transport.send(message);
         System.out.println("Sent message successfully....");
      } catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

編譯並執行此程式以傳送 HTML 電子郵件 -

輸出

$ java SendFileEmail
Sent message successfully....

使用者身份驗證部分

如果需要向電子郵件伺服器提供使用者 ID 和密碼以進行身份驗證,則可以按如下方式設定這些屬性 -

props.setProperty("mail.user", "myuser");
props.setProperty("mail.password", "mypwd");

其餘的電子郵件傳送機制將保持如上所述。

廣告