Thứ Ba, 26 tháng 2, 2019

Đào tạo Java - Java - Gửi email

Để gửi e-mail bằng Ứng dụng Học lập trình Java của bạn đủ đơn giản nhưng để bắt đầu, bạn nên cài đặt API Java Mail và Khung kích hoạt Java (JAF) trên máy của bạn.

Bạn có thể tải xuống phiên bản Java Mail mới nhất (Phiên bản 1.2) từ trang web tiêu chuẩn của Java.

Học lập trình java chuyên nghiệp
Học lập trình java chuyên nghiệp

Bạn có thể tải xuống phiên bản mới nhất của JAF (Phiên bản 1.1.1)từ trang web tiêu chuẩn của Học lập trình Java.

Tải xuống và giải nén các tệp này, trong các thư mục cấp cao nhất mới được tạo, bạn sẽ tìm thấy một số tệp jar cho cả hai ứng dụng. Bạn cần phải thêm mail.jar và activation.jar tập tin trong classpath của bạn.

Gửi một email đơn giản


Dưới đây là một ví dụ để gửi e-mail đơn giản từ máy của bạn. Giả định rằng localhost của bạn được kết nối với Internet và đủ khả năng để gửi e-mail.
// 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();
      }
   }
}

Biên dịch và chạy chương trình này để gửi e-mail đơn giản Học lập trình Java

$ java SendEmail
Sent message successfully....

Nếu bạn muốn gửi e-mail đến nhiều người nhận thì các phương pháp sau sẽ được sử dụng để chỉ định nhiều ID email

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

Dưới đây là mô tả của các tham số 

loại - Điều này sẽ được đặt thành TO, CC hoặc BCC. Ở đây CC đại diện cho Carbon Copy và BCC đại diện cho Black Carbon Copy. Ví dụ: Message.RecipientType.TO

địa chỉ - Đây là một mảng của ID email. Bạn sẽ cần sử dụng phương thức InternetAddress () trong khi chỉ định ID email Học lập trình Java.

Gửi E-mail HTML

Dưới đây là một ví dụ để gửi e-mail HTML từ máy của bạn. Ở đây, giả định rằng localhost của bạn được kết nối với Internet và đủ khả năng để gửi e-mail.

Ví dụ này rất giống với ví dụ trước, ngoại trừ ở đây chúng tôi đang sử dụng phương thức setContent () để đặt nội dung có đối số thứ hai là "text / html" để xác định rằng nội dung HTML được bao gồm trong thông báo.

Sử dụng ví dụ này, bạn có thể gửi nội dung HTML lớn như bạn muốn.
// 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();
      }
   }
}
Biên dịch và chạy chương trình này để gửi e-mail HTML

$ java SendHTMLEmail
Sent message successfully....

Gửi tệp đính kèm trong e-mail

Dưới đây là một ví dụ để gửi e-mail có tệp đính kèm từ máy của bạn. Ở đây, Học lập trình Java giả định rằng localhost của bạn được kết nối với internet và đủ khả năng để gửi e-mail.
// 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();
      }
   }
}
Biên dịch và chạy chương trình này để gửi e-mail HTML

$ java SendFileEmail
Sent message successfully....

Phần xác thực người dùng

Nếu được yêu cầu cung cấp ID người dùng và Mật khẩu cho máy chủ email để xác thực, thì bạn có thể đặt các thuộc tính này như sau

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

Phần còn lại của cơ chế gửi e-mail sẽ vẫn như được giải thích ở trên.

Không có nhận xét nào:

Đăng nhận xét

Lập trình Java - Ngoại lệ

Một ngoại lệ (hoặc sự kiện đặc biệt) là một vấn đề phát sinh trong quá trình thực hiện chương trình. Khi xảy ra Ngoại lệ , luồng bình thường...