java 邮箱发送信息 附件图片代码实现

pom

<!-- 邮箱发送依赖-->
      <dependency>
          <groupId>javax.activation</groupId>
          <artifactId>activation</artifactId>
          <version>1.1</version>
      </dependency>
      <dependency>
          <groupId>com.sun.mail</groupId>
          <artifactId>javax.mail</artifactId>
          <version>1.5.4</version>
      </dependency>

      <dependency>
          <groupId>javax.mail</groupId>
          <artifactId>mail</artifactId>
          <version>1.4</version>
      </dependency>

properties

mail_user = *************@163.com
mail_password = *********LX
mail_host = smtp.163.com
mail_from = ************@163.com

MailAuthenticatorUtil

/**
 * 发件人账号密码
 *
 * @author zhangdi
 */
public class MailAuthenticatorUtil extends Authenticator {

    public static String USERNAME = "";
    public static String PASSWORD = "";
    private static final PropertiesUtil MAIL = new PropertiesUtil("/configs/mail.properties");
    private static final String MAIL_USER;
    private static final String MAIL_PASSWORD;
    private static final String MAIL_HOST;
    private static final String MAIL_FROM;

    static {
        MAIL_USER = MAIL.getProperty("mail_user");//发件人邮箱
        MAIL_PASSWORD = MAIL.getProperty("mail_password");//授权码(注意不是邮箱登录密码)
        MAIL_HOST = MAIL.getProperty("mail_host");//smtp.163.com
        MAIL_FROM = MAIL.getProperty("mail_from");//发件人

    }

    public MailAuthenticatorUtil() {
    }

    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(USERNAME, PASSWORD);
    }

    /**
     * 发送邮件
     *
     * @param
     * @param to      接收者邮箱
     * @param subject 邮件主题
     * @return success 发送成功 failure 发送失败
     * @throws Exception
     */
    public static String sendMailA(String imgname, String filename, String to, String subject, String yzm, Integer type) {
        //邮箱内容
        StringBuffer sb = new StringBuffer();
        String s = emailTemplate(type, yzm);

        if (s == null) {
            return "failure";
        }
        sb.append(s);
        if (to != null) {
            Properties props = System.getProperties();
            props.put("mail.smtp.host", MAIL_HOST);
            props.put("mail.smtp.auth", "true");
            MailAuthenticatorUtil auth = new MailAuthenticatorUtil();
            MailAuthenticatorUtil.USERNAME = MAIL_USER;
            MailAuthenticatorUtil.PASSWORD = MAIL_PASSWORD;
            Session session = Session.getInstance(props, auth);
            session.setDebug(true);


            try {
                MimeBodyPart text = new MimeBodyPart();
                MimeMessage message = new MimeMessage(session);

                message.setFrom(new InternetAddress(MAIL_FROM));
                if (!to.trim().equals(""))
                    message.addRecipient(Message.RecipientType.TO,
                            new InternetAddress(to.trim()));
                /**验证码*/
                message.setSubject(subject);
                Multipart mp = new MimeMultipart(); // 整个邮件:正文+附件
                text.setContent(sb.toString(), "text/html;charset=gb2312");
                mp.addBodyPart(text);

                /**图片  **/
                // 设置要发送图片的文件路径
                String  str =  "D:/1.jpg,D:/1.jpg";

                Arrays.stream(str.split(",")).forEach(obj->{
                    MimeBodyPart mailImgs = new MimeBodyPart();
                    FileDataSource img = new FileDataSource(obj);
                    try {
                        mailImgs.setDataHandler(new DataHandler(img));
                        mailImgs.setFileName(MimeUtility.encodeText(img.getName()));
                        mp.addBodyPart(mailImgs);
                    } catch (MessagingException | UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }
                });

                /**附件 **/
                // 设置要发送附件的文件路径
                String strfile = "D:/新建 DOCX 文档.docx,D:/新建 DOCX 文档.docx";

                Arrays.stream(strfile.split(",")).forEach(file->{
                    MimeBodyPart files = new MimeBodyPart();
                    FileDataSource fds = new FileDataSource(file);
                    try {
                        files.setDataHandler(new DataHandler(fds));
                        files.setFileName(MimeUtility.encodeText(fds.getName()));
                        mp.addBodyPart(files);
                    } catch (MessagingException | UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }
                });

                message.setContent(mp);
                message.setSentDate(new Date());
                message.saveChanges();
                Transport trans = session.getTransport("smtp");
                System.out.println(trans);
                Transport.send(message);
                System.out.println(message.toString());
            } catch (Exception e) {
                e.printStackTrace();
                return "failure";
            }
            return "success";
        } else {
            return "failure";
        }
   
    }
    /**
     * 模板
     * @param type
     * @param yzm
     * @return
     */
    private static final String emailTemplate(Integer type, String yzm) {

        switch (type) {
            case 1:
                return "<!DOCTYPE>" + "<div bgcolor='#f1fcfa'   style='border:1px solid #d9f4ee; font-size:14px; line-height:22px; color:#005aa0;padding-left:1px;padding-top:5px;   padding-bottom:5px;'><span style='font-weight:bold;'>温馨提示:</span>"
                        + "<div style='width:950px;font-family:arial;'>欢迎使用**活动,您的注册码为:<br/><h2 style='color:green'>" + yzm + "</h2><br/>本邮件由系统自动发出,请勿回复。<br/>感谢您的使用。<br/>武汉****股份有限公司</div>"
                        + "</div>";
  
            default:

        }
        return null;
    }
}

service

/**
     * 
     * @param imgs  图片路径
     * @param filename  附件路径
     * @param to   收件人邮箱
     * @param subject  主题信息
     * @param type  模板类型
     * @return
     */
   public static String sendMailA(String imgs,String filename, String to, String subject, Integer type) {

        String yzm = RandomUtils.generateRandomString(6);
        //自己的业务逻辑
        String mailA = MailAuthenticatorUtil.sendMailA(imgs, filename, to, subject, yzm, type);
        return mailA;
    }

controller

@Api(value = "邮箱发送接口")
@RestController
@RequestMapping(value = "/email")
public class MailOperationController {
    String to = "16**********@qq.com";// 收件人
    String subject = "输入邮件主题";
    
@RequestMapping(value = "/mail", method = RequestMethod.GET)
    public String IMGS(String imgs,String filename, Integer type) {
        String res ="";
        try {
            res = MailOperationService.sendMailA(imgs,filename,to, subject, type);
            System.out.println(res);

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return res;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值