Java发送QQ邮件的3种形式(commons-email)

原文链接:https://blog.csdn.net/qq_38225558/article/details/84960229

    <!-- 邮件支持 -->
    <dependency>
      <groupId>javax.mail</groupId>
      <artifactId>mail</artifactId>
      <version>1.4.1</version>
    </dependency>
      <dependency>
          <groupId>activation</groupId>
          <artifactId>activation</artifactId>
          <version>1.0.2</version>
      </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-email</artifactId>
      <version>1.5</version>
    </dependency>
/**
 *  发送QQ邮件
 *  方式①:发送邮件的简单代码
 *  方式②:发送邮件中添加附件
 *  方式③:发送HTML的邮件格式
 */
public class EmailTest {
 
    @Test  //发送邮件的简单代码
    public void testSimpleEmail() throws Exception {
        SimpleEmail email = new SimpleEmail(); //创建一个最简单的email对象
        //这里我使用的是QQ,使用的是smtp服务器,需要身份验证,大家如果是使用其它服务器,可以自己去网上进行搜索
        email.setHostName("smtp.qq.com");
        //POP3服务器(端口995)
        //SMTP服务器(端口465或587)。
        email.setSmtpPort(465);
        //验证信息(发送的邮箱地址与密码) 注:这里的密码是授权码
        email.setAuthenticator(new DefaultAuthenticator("xxx@qq.com", "填写你的授权码"));
        email.setSSLOnConnect(true); // 是否启用SSL
        email.setFrom("xxx@qq.com"); //发送邮件的地址(和验证信息的地址一样)
        email.setSubject("第一封简单邮件");  //邮件的标题
        email.setMsg("简单的邮件来了哦!!!"); //邮件的内容
        email.addTo("xxx@qq.com"); //发送给哪一个邮件
        email.send();  //进行邮件发送
    }
 
    @Test  //发送邮件中添加附件
    public void testEmailAttachment() throws Exception {
        EmailAttachment attachment = new EmailAttachment(); //创建一个附件对象
        attachment.setPath("POITestImage/1.jpg");  //放一张项目中的图片(指向真实的附件)
        attachment.setDisposition(EmailAttachment.ATTACHMENT); //完成附件设置
        attachment.setDescription("这张图片是一个..."); //设置附件的描述
        attachment.setName("1.jpg"); //设置附件的名称
        //创建email对象(MultiPartEmail可以操作附件)
        MultiPartEmail email = new MultiPartEmail();
        email.setHostName("smtp.qq.com");
        email.setSmtpPort(465);
        //验证信息(发送的邮箱地址与密码) 注:这里的密码是授权码
        email.setAuthenticator(new DefaultAuthenticator("xxx@qq.com", "填写你的授权码"));
        email.setSSLOnConnect(true); // 是否启用SSL
        email.setFrom("xxx@qq.com"); //发送邮件的地址(和验证信息的地址一样)
        email.addTo("xxx@qq.com");  //发送给哪一个邮件
        email.setSubject("这是一张图片"); //邮件标题
        email.setMsg("我发了一张图片给你看哦!");  //邮件内容
        email.attach(attachment); //把附件加到邮件中
        email.send(); //发送邮件
    }
 
    @Test  //发送HTML的邮件格式
    public void testHtml() throws Exception {
        HtmlEmail email = new HtmlEmail(); // 创建可以写Html的email对象
        email.setHostName("smtp.qq.com");
        email.setSmtpPort(465);
        email.setAuthenticator(new DefaultAuthenticator("xxx@qq.com", "填写你的授权码"));
        email.setSSLOnConnect(true); // 是否启用SSL
        email.setCharset("UTF-8");   //发送的时候如果乱码,配置相应的编码
        email.addTo("xxx@qq.com"); //发送给哪一个邮件
        email.setFrom("xxx@qq.com",  "xx");//xx为发件人名字
        email.setSubject("这里面写HTML,非常厉害");
        //设置HTML的信息
        String url = "https://www.baidu.com/";
        email.setHtmlMsg("<html><h1 style='color:green;'><a href="+url+">www.baidu.com</a></h1>点击进入百度</html>");
        //email.setTextMsg("这个就是很一般的显示"); //也可以配置普通的信息
        email.send();//发送邮件
    }
 
}

最近又在网上找了一种 Spring boot方式

这是原文链接https://zhengqing.blog.csdn.net/article/details/108677812

<!--发送邮件 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

application.yml配置

server:
  port: 80

spring:
  # ========================== ↓↓↓↓↓↓ 发送邮件配置(QQ邮箱) ↓↓↓↓↓↓ ==========================
  mail:
    host: smtp.qq.com
    username: xxx@qq.com # TODO 账号
    password: xxxxxxxxxx # TODO 注:这里填写 在邮箱 设置 -> 账号 里面生成的`授权码` !!!
    default-encoding: UTF-8
    form: xxx@qq.com     # TODO 邮件发送人地址
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true

工具类

@Component
public class EmailUtil {

    private static JavaMailSender javaMailSender;

    private static String formEmail;

    @Value("${spring.mail.form}")
    private String formEmail2;

    @Autowired
    private JavaMailSender javaMailSender2;

    @PostConstruct
    public void beforeInit() {
        javaMailSender = javaMailSender2;
        formEmail = formEmail2;
    }

    /**
     * 发送邮件 - 不带附件
     *
     * @param title:邮件标题
     * @param content:
     *            邮件内容
     * @param sendTo:
     *            收件人
     * @return: void
     * @author : zhengqing
     * @date : 2020/8/14 19:28
     */
    @SneakyThrows(Exception.class)
    public static void sendMail(String title, String content, String... sendTo) {
        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        // 发送人邮件地址
        helper.setFrom(formEmail);
        // 接收人邮件地址
        helper.setTo(sendTo);
        // 主题
        helper.setSubject(title);

        // html内容 (设置true标识发送html邮件)
        helper.setText(content, true);

        javaMailSender.send(message);
    }

    /**
     * 发送邮件 - 带附件
     *
     * @param title:邮件标题
     * @param content:
     *            邮件内容
     * @param attachmentFilename:附件文件名
     * @param file:附件
     * @param sendTo:
     *            收件人
     * @return: void
     * @author : zhengqing
     * @date : 2020/8/14 19:28
     */
    @SneakyThrows(Exception.class)
    public static void sendMail(String title, String content, String attachmentFilename, File file, String... sendTo) {
        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        // 发送人邮件地址
        helper.setFrom(formEmail);
        // 接收人邮件地址
        helper.setTo(sendTo);
        // 主题
        helper.setSubject(title);

        // ① html内容 (设置true标识发送html邮件)
        helper.setText(content, true);

        // ② 附件
        if (StringUtils.isNotBlank(attachmentFilename)) {
            helper.addAttachment(attachmentFilename, file);
        }

        javaMailSender.send(message);
    }

}

测试

@RestController
@RequestMapping("/api/test")
public class TestController {

    @GetMapping("/sendEmailTest")
    public String sendEmailTest() {
        EmailUtil.sendMail("测试发送普通邮件", "test...", "xxx@qq.com");
        File file = new File("C:\\Users\\Administrator\\Desktop\\临时垃圾站\\test.docx");
        EmailUtil.sendMail("测试发送带附件邮件", "test...", "test.docx", file, "xxx@qq.com");
        return "SUCCESS ~";
    }
}





第一步:项目引入相应资源   commons-email-xx.jar,mail.jar,activation.jar

maven项目pom引入 (注意对应配置的版本问题哦~)     可参考 --> maven依赖查询


发送前注意需要对要发送的邮箱进行相应的设置,可参考 QQ邮箱开启SMTP服务的步骤

开启下面的2项

记住你的授权码哦,后面要使用到!!


第二步:发送邮件   (3种形式可供参考)

效果图:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值