All Downloads are FREE. Search and download functionalities are using the official Maven repository.

anlavn.net.Email Maven / Gradle / Ivy

package anlavn.net;
// Make By Bình An || AnLaVN || KatoVN

import java.io.File;
import java.util.Collections;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

/**Lớp Email hỗ trợ tạo một SMTP để gửi email.
 * @author AnLaVN - https://github.com/AnLaVN
 */
public class Email {
    private String HostEmail = null, Title = "Email title", Content = "

Email content.

"; private Session session = null; private Set setTO = new HashSet<>(), setCC = new HashSet<>(), setBCC = new HashSet<>(), setFile = new HashSet<>(); private InternetAddress[] getAddress(Set set) throws AddressException{ return InternetAddress.parse(String.join(",", set)); } private void setHost(String hostEmail, final String hostPass, String hostServer, int hostPort){ this.HostEmail = hostEmail; Properties p = new Properties(); p.put("mail.smtp.auth", "true"); p.put("mail.smtp.starttls.enable", "true"); p.put("mail.smtp.host", hostServer); p.put("mail.smtp.port", hostPort); this.session = Session.getInstance(p, new javax.mail.Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(HostEmail, hostPass); } }); } private Email() {} /**Tạo một máy chủ SMTP với đầy đủ thông tin. * @param hostEmail là địa chỉ email SMTP của bạn.
* @param hostPass là mật khẩu máy chủ SMTP của bạn.
*/ public Email(String hostEmail, String hostPass) { setHost(hostEmail, hostPass, "smtp.gmail.com", 587); } /**Tạo một máy chủ SMTP với đầy đủ thông tin. * @param hostEmail là địa chỉ email SMTP của bạn.
* @param hostPass là mật khẩu máy chủ SMTP của bạn.
* @param hostServer là địa chỉ máy chủ SMTP. Mặc định là 'smtp.gmail.com'
*/ public Email(String hostEmail, String hostPass, String hostServer) { setHost(hostEmail, hostPass, hostServer, 587); } /**Tạo một máy chủ SMTP với đầy đủ thông tin. * @param hostEmail là địa chỉ email SMTP của bạn.
* @param hostPass là mật khẩu máy chủ SMTP của bạn.
* @param hostServer là địa chỉ máy chủ SMTP. Mặc định là 'smtp.gmail.com'
* @param hostPort là cổng của máy chủ SMTP. Mặc định là '587'
*/ public Email(String hostEmail, String hostPass, String hostServer, int hostPort) { setHost(hostEmail, hostPass, hostServer, hostPort); } /**Sử dụng phương thức này để thiết lập nội dung email. * @param title là Tiêu đề Email.
* @param content là Nội dung Email.
*/ public final void setEmail(String title, String content){ this.Title = title; this.Content = content; } /** Sử dụng phương thức này để thêm người nhận với loại là TO. * @param setTO là địa chỉ email của người nhận mà bạn muốn gửi đến.
* @return true nếu tập hợp này thay đổi.
*/ public final boolean addSetTO(String... setTO){ return Collections.addAll(this.setTO, setTO); } /** Sử dụng phương thức này để thêm người nhận với loại là TO. * @param setTO là địa chỉ email của người nhận mà bạn muốn gửi đến.
* @return true nếu tập hợp này thay đổi.
*/ public final boolean addSetTO(Set setTO){ return this.setTO.addAll(setTO); } /** Sử dụng phương thức này để lấy nhóm người nhận có loại là TO. * @return nhóm người nhận có loại là TO. */ public final Set getSetTO(){ return this.setTO; } /** Sử dụng phương thức này để xóa nhóm người nhận có loại là TO. */ public final void clearSetTO(){ this.setTO.clear(); } /** Sử dụng phương thức này để thêm người nhận với loại là CC. * @param setCC là địa chỉ email của người nhận mà bạn muốn gửi bản sao.
* @return true nếu tập hợp này thay đổi.
*/ public final boolean addSetCC(String... setCC){ return Collections.addAll(this.setCC, setCC); } /** Sử dụng phương thức này để thêm người nhận với loại là CC. * @param setCC là địa chỉ email của người nhận mà bạn muốn gửi bản sao.
* @return true nếu tập hợp này thay đổi.
*/ public final boolean addSetCC(Set setCC){ return this.setCC.addAll(setCC); } /** Sử dụng phương thức này để lấy nhóm người nhận có loại là CC. * @return nhóm người nhận có loại là CC. */ public final Set getSetCC(){ return this.setCC; } /** Sử dụng phương thức này để xóa nhóm người nhận có loại là CC. */ public final void clearSetCC(){ this.setCC.clear(); } /** Sử dụng phương thức này để thêm người nhận với loại là BCC. * @param setBCC là địa chỉ email của người nhận mà bạn muốn gửi bản sao ẩn.
* @return true nếu tập hợp này thay đổi.
*/ public final boolean addSetBCC(String... setBCC){ return Collections.addAll(this.setBCC, setBCC); } /** Sử dụng phương thức này để thêm người nhận với loại là BCC. * @param setBCC là địa chỉ email của người nhận mà bạn muốn gửi bản sao ẩn.
* @return true nếu tập hợp này thay đổi.
*/ public final boolean addSetBCC(Set setBCC){ return this.setBCC.addAll(setBCC); } /** Sử dụng phương thức này để lấy nhóm người nhận có loại là BCC. * @return nhóm người nhận có loại là BCC. */ public final Set getSetBCC(){ return this.setBCC; } /** Sử dụng phương thức này để xóa nhóm người nhận có loại là BCC. */ public final void clearSetBCC(){ this.setBCC.clear(); } /** Sử dụng phương thức này để thêm tệp đính kèm vào email. * @param setFile là tập tin đính kèm mà bạn muốn gửi.
* @return true nếu tập hợp này thay đổi.
*/ public final boolean addSetAttachments(String... setFile){ return Collections.addAll(this.setFile, setFile); } /** Sử dụng phương thức này để thêm tệp đính kèm vào email. * @param setFile là tập tin đính kèm mà bạn muốn gửi.
* @return true nếu tập hợp này thay đổi.
*/ public final boolean addSetAttachments(Set setFile){ return this.setFile.addAll(setFile); } /** Sử dụng phương thức này để lấy tập hợp các tệp đính kèm. * @return tập hợp các tệp đính kèm. */ public final Set getSetAttachments(){ return this.setFile; } /** Sử dụng phương thức này để xóa nhóm tệp đính kèm. */ public final void clearSetAttachments(){ this.setFile.clear(); } /** Sử dụng phương thức này để xóa nội dung email bao gồm tiêu đề, nội dung email, TO, CC, BCC, Tệp đính kèm. */ public final void clear(){ this.Title = "Email title"; this.Content = "

Email content.

"; clearSetTO(); clearSetCC(); clearSetBCC(); clearSetAttachments(); } /**Sử dụng phương thức này để gửi email đến người nhận. * @throws javax.mail.MessagingException ném một ngoại lệ nếu không có kết nối internet hoặc không thể gửi email đến người nhận. */ public final void sendEmail() throws MessagingException { Message msg = new MimeMessage(session); msg.setFrom(new InternetAddress(HostEmail)); if(setTO != null) msg.addRecipients(Message.RecipientType.TO, getAddress(setTO)); if(setCC != null) msg.addRecipients(Message.RecipientType.CC, getAddress(setCC)); if(setBCC!= null) msg.addRecipients(Message.RecipientType.BCC,getAddress(setBCC)); msg.setSubject(Title); if(setFile == null) msg.setContent(Content, "text/html; charset=UTF-8"); else{ BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setContent(Content, "text/html; charset=UTF-8"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); for(String file : setFile){ messageBodyPart = new MimeBodyPart(); messageBodyPart.setDataHandler(new DataHandler(new FileDataSource(file))); messageBodyPart.setFileName(new File(file).getName()); multipart.addBodyPart(messageBodyPart); } msg.setContent(multipart); } Transport.send(msg); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy