Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
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);
}
}