123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- package com.szwl.model.utils;
- import javax.activation.DataHandler;
- import javax.activation.FileDataSource;
- import javax.mail.*;
- import javax.mail.internet.*;
- import java.io.UnsupportedEncodingException;
- import java.util.Properties;
- /**
- * 阿里云邮件发送
- */
- public class MailUtil {
- private static final String ALIDM_SMTP_HOST = "smtp.mxhichina.com";
- // private static final String ALIDM_SMTP_HOST = "smtp.qiye.aliyun.com";
- // private static final String ALIDM_SMTP_HOST = "smtpdm.aliyun.com";
- private static final int ALIDM_SMTP_PORT = 25;// 或80
- // private static final String SENDER_NAME = "Magic Candy";
- // 发件人的账号 和 密码
- private String user;
- private String password;
- public MailUtil() {
- // this("AfterSalesInfo@sunzee.net", "Sz123456");
- // this("magic_candy_sunzee@sunzee.net", "Sz123456");
- this("magiccandy020@magiccandy.cn", "Sunzee020");
- }
- public MailUtil(String user, String password) {
- this.user = user;
- this.password = password;
- }
- // public static void main(String[] args) {
- // new MailUtil().send("520283710@qq.com", "测试1", "nihao显示");
- //new MailUtil().send("1161588342@qq.com", "测试1", "市劳动纠纷联赛积分了","C:/Users/guo/Desktop/Proguard.xml");
- // }
- /**
- * 发送邮件
- *
- * @param toEmail 收件人邮箱地址
- * @param subject 邮件标题
- * @param content 邮件内容 可以是html内容
- */
- public void send(String toEmail, String subject, String content) {
- Session session = loadMailSession();
- // session.setDebug(true);
- // 创建邮件消息
- MimeMessage message = new MimeMessage(session);
- try {
- // 设置发件人
- message.setFrom(new InternetAddress(user));
- // message.setFrom(new InternetAddress(user, SENDER_NAME));
- Address[] a = new Address[1];
- a[0] = new InternetAddress(user);
- message.setReplyTo(a);
- // 设置收件人
- InternetAddress to = new InternetAddress(toEmail);
- message.setRecipient(MimeMessage.RecipientType.TO, to);
- // 设置邮件标题
- message.setSubject(subject);
- // 设置邮件的内容体
- message.setContent(content, "text/html;charset=UTF-8");
- // 发送邮件
- Transport.send(message);
- } catch (MessagingException e) {
- String err = e.getMessage();
- // 在这里处理message内容, 格式是固定的
- System.out.println(err);
- }
- }
- /**
- * 发送邮件 带附件
- *
- * @param toEmail 收件人邮箱地址
- * @param subject 邮件标题
- * @param content 邮件内容 可以是html内容
- * @param attachPath 附件路径
- */
- public void send(String toEmail, String subject, String content, String attachPath) {
- Session session = loadMailSession();
- MimeMessage mm = new MimeMessage(session);
- try {
- //发件人
- mm.setFrom(new InternetAddress(user));
- // mm.setFrom(new InternetAddress(user, SENDER_NAME));
- //收件人
- mm.setRecipient(Message.RecipientType.TO, new InternetAddress(toEmail)); // 设置收件人
- // mm.setRecipient(Message.RecipientType.CC, new
- // InternetAddress("XXXX@qq.com")); //设置抄送人
- //标题
- mm.setSubject(subject);
- //内容
- Multipart multipart = new MimeMultipart();
- //body部分
- BodyPart contentPart = new MimeBodyPart();
- contentPart.setContent(content, "text/html;charset=utf-8");
- multipart.addBodyPart(contentPart);
- //附件部分
- BodyPart attachPart = new MimeBodyPart();
- FileDataSource fileDataSource = new FileDataSource(attachPath);
- attachPart.setDataHandler(new DataHandler(fileDataSource));
- attachPart.setFileName(MimeUtility.encodeText(fileDataSource.getName()));
- multipart.addBodyPart(attachPart);
- mm.setContent(multipart);
- Transport.send(mm);
- } catch (Exception e) {
- String err = e.getMessage();
- // 在这里处理message内容, 格式是固定的
- System.out.println(err);
- }
- }
- private Session loadMailSession() {
- try {
- // 配置发送邮件的环境属性
- final Properties props = new Properties();
- // 表示SMTP发送邮件,需要进行身份验证
- props.put("mail.smtp.auth", "true");
- props.put("mail.smtp.host", ALIDM_SMTP_HOST);
- // props.put("mail.smtp.port", ALIDM_SMTP_PORT);
- // 如果使用ssl,则去掉使用25端口的配置,进行如下配置,
- props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
- props.put("mail.smtp.socketFactory.port", "465");
- props.put("mail.smtp.port", "465");
- // 发件人的账号
- props.put("mail.user", user);
- // 访问SMTP服务时需要提供的密码
- props.put("mail.password", password);
- // 构建授权信息,用于进行SMTP进行身份验证
- Authenticator authenticator = new Authenticator() {
- @Override
- protected PasswordAuthentication getPasswordAuthentication() {
- // 用户名、密码
- String userName = props.getProperty("mail.user");
- String password = props.getProperty("mail.password");
- return new PasswordAuthentication(userName, password);
- }
- };
- // 使用环境属性和授权信息,创建邮件会话
- return Session.getInstance(props, authenticator);
- } catch (Exception e) {
- e.printStackTrace();
- System.out.println("mail session is null");
- }
- return null;
- }
- }
|