springboot mail 发送邮件和附件

springboot mail 发送邮件

  1. #QQ邮箱
      mail:
        host: smtp.qq.com
        protocol: smtp
        default-encoding: utf-8
        port: 587
        username: 1234567891@qq.com
        #授权码
        password: abcdefghijklmn
        test-connection: true
        properties:
          mail:
            smtp:
              auth: true
              starttls:
                enable: true
                required: true
    
  2. //spring注入 
    @Autowired
        JavaMailSender javaMailSender;
    //而不是
    //JavaMailSender javaMailSender = new JavaMailSenderImpl();
    
  3.  		// 发件人(是自己)
            simpleMailMessage.setFrom("1234567891@163.com");
            // 收件人
            simpleMailMessage.setTo("9876543219@163.com");
            // 邮件主题
            simpleMailMessage.setSubject("测试");
            // 邮件内容
            simpleMailMessage.setText("测试测试");
             javaMailSender.send(simpleMailMessage);
    
   /**
     * 发送附件 邮件发送
     *
	 * 可以发送附件(文件,图片,音乐)和正文
	 * 给附件的URL即可
	 * 也可以换成本地filepath
     * @param email  收件人邮箱
     * @param urlPath  附件url
     * @param title   主题
     * @param text  内容正文
     * @return
     */
    @PostMapping("sendEmail")
    public String enclosureEmail(String email, String  urlPath, String title, String text) {
        try {
            Properties prop = new Properties();
            prop.setProperty("mail.host","smtp.qq.com");
            prop.setProperty("mail.transport.protocol","smtp");
            prop.setProperty("mail.smtp.auth","true");
            MyAuth myAuth = new MyAuth("1311111111@qq.com","abcdefghijk");
            Session session = Session.getInstance(prop, myAuth);
            //附件
            MimeMessage message = new MimeMessage(session);
            //发件人
            message.setFrom("1311111111@qq.com");
            //收件人
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(email));
            //title邮件标题
            message.setSubject(title);
            MimeBodyPart attach = new MimeBodyPart();
            //根据url获取文件
            URL url = new URL(urlPath);
            DataSource dataSource = new URLDataSource(url);
            DataHandler file = new DataHandler(dataSource);
            attach.setDataHandler(file);
            String name = file.getName();
            String fileName = name.substring(name.lastIndexOf("/") + 1);
            //设置附件文件名
            attach.setFileName(fileName);
            MimeMultipart multipart = new MimeMultipart();
            multipart.addBodyPart(attach);
            //正文
            MimeBodyPart content = new MimeBodyPart();
            //正文内容
            content.setText(text);
            multipart.addBodyPart(content);
            multipart.setSubType("mixed");
            message.setContent(multipart);
            message.saveChanges();
            //发送
            Transport ts = session.getTransport();
            ts.send(message);
            ts.close();
          return "200";
        } catch (Exception e) {
            e.printStackTrace();
            return "500";
        }
    }

/**
/*设置用户名密码(授权码)
/*
**/
public class MyAuth extends Authenticator{
   private String username;
   private String password;

   public MyAuth(String username, String password) {
       this.username = username;
       this.password = password;
   }

   public String getUsername() {
       return username;
   }

   public void setUsername(String username) {
       this.username = username;
   }

   public String getPassword() {
       return password;
   }

   public void setPassword(String password) {
       this.password = password;
   }

   @Override
   protected PasswordAuthentication getPasswordAuthentication() {
       return new PasswordAuthentication(username, password);
   }
}
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值