import com.sun.istack.ByteArrayDataSource;
import javax.activation.DataSource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
import java.util.Properties;
@Component
public class MailMananger {
private static final String host = "XXX";
private static final String username ="XXX@163.com";
private static final String password = "XXX";
private static final String encode ="UTF-8";
private static final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
public JavaMailSenderImpl init(){
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(host);
mailSender.setUsername(username);
mailSender.setPassword(password);
mailSender.setDefaultEncoding(encode);
Properties props = new Properties();
props.setProperty("mail.smtp.host", host);
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.auth", "true");
mailSender.setJavaMailProperties(props);
return mailSender;
}
/**
* 发送文本邮件
* @param toUser 收件者
* @param subject 主题
* @param content 主体
*/
public void sendTestMail(String toUser, String subject, String content){
JavaMailSender javaMailSender = init();
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(username);//发送者
message.setTo(toUser);//接受者
message.setSubject(subject);//主题
message.setText(content);//主体
//message.copyTo(copyTo);文本邮件抄送
javaMailSender.send(message);
}
/**
* 发送富文本邮件
* @param toUser 收件者
* @param subject 主题
* @param content 主体
*/
public void sendHtmlMail(String toUser,String subject,String content){
JavaMailSender javaMailSender = init();
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
try{
//true 标识需要创建一个multipart message
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
helper.setFrom(username);
helper.setTo(toUser);
helper.setSubject(subject);
helper.setText(content,true);
}catch (MessagingException e){
System.err.println(e.toString());
}
}
/**
* 附件邮件
* @param toUser 收件者
* @param subject 主题
* @param content 主体
* @param files 附件
*/
public Object sendAttachmentsMail(String[] toUser, String subject, String content, MultipartFile[] files, String[] emailCc){
System.setProperty("mail.mime.splitlongparameters","false");//解决利用javaManager发送邮件,文件名称过长,自动截取的问题
JavaMailSender javaMailSender = init();
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
try{
//true 标识需要创建一个multipart message
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true,"utf-8");
helper.setFrom(username);
helper.setTo(toUser);
helper.setSubject(subject);
if(null != emailCc && emailCc.length != 0){
helper.setCc(emailCc);
}
helper.setText(content,true);
for(MultipartFile file :files){helper.addAttachment(MimeUtility.encodeWord(file.getOriginalFilename(),"utf-8","B"),file);
}
javaMailSender.send(mimeMessage);
return "success";
}catch (Exception e){
System.err.println(e.getMessage());
return e;
}
}
}