基于JavaMail的Java邮件发送

 更新时间:2021年10月11日 10:17:36   作者:Sparks_t  
电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等。本文将简单介绍如何通过 Java 代码来创建电子邮件,并连接邮件服务器发送邮件

邮件绑定功能

【需求】

  • 1、 用户注册时,输入邮箱
  • 2、 通过Javamail技术,向用户邮箱发送一封祝贺邮件

1、javamail发送邮件

1.1、简介

什么是javamail?

在这里插入图片描述

1.2、工具类

首先从哪个邮箱发出邮件,所以得发送邮件账号支持 程序发送邮件

第一步:配置网易 开启客户端授权码

(1)授权码申请:

在这里插入图片描述


选中POP3/SMTP服务和IMAP/SMTP服务,点击开启,如果已开启,会显示关闭

在这里插入图片描述

授权码就是JAVA代码登录邮箱的密码:MQKFLKEKMUHOKVPS

在这里插入图片描述

第二步:在mail-demo01项目中,配置pom.xml 添加javamail的坐标。

在这里插入图片描述

<!-- 导入javamail的坐标 -->
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

第三步:根据需要,编辑发送邮件正文

步骤:

  • 1 设置邮件发送的属性
  • 2 设置主机地址
  • 3 设置是否打开验证
  • 4 创建链接
  • 5 创建邮件
  • 6 设置发送者
  • 7 设置接受者
  • 8 设置标题
  • 9 设置正文
  • 10 坐火箭
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
import java.util.Properties;
public class MailUtil {
   public static String smtp_host = "smtp.163.com"; // 网易
   public static String username = "222@163.com"; // 邮箱
   public static String password = "q7w8e9a4s5d6"; // 授权码(登录邮箱-->设置-->邮箱安全设置-->客户端授权密码),这里不是邮箱的密码,切记!
   public static String from = "222@163.com"; // 来源邮箱,使用当前账号

   public static void sendMail(String to, String subject, String text) throws Exception {
      // 1 准备发送邮件需要的参数
      Properties props = new Properties();
      // 设置主机地址 smtp.qq.com smtp.126.com smtp.163.com
      props.put("mail.smtp.host", smtp_host);
      // 是否打开验证:只能设置true,必须打开
      props.put("mail.smtp.auth", true);

      // 2 连接邮件服务器
      Session session = Session.getDefaultInstance(props);
      // 3 创建邮件信息
      MimeMessage message = new MimeMessage(session);

      // 4 设置发送者
      InternetAddress fromAddress = new InternetAddress(from);
      message.setFrom(fromAddress);
      // 5 设置接收者
      InternetAddress toAddress = new InternetAddress(to);
      // to:直接接收者 cc:抄送 bcc暗送
      message.setRecipient(RecipientType.TO, toAddress);
      // 6 设置主题
      message.setSubject(subject);
      // 7 设置正文
      message.setText(text);

      // 设置HTML方式发送
      //message.setContent(text, "text/html;charset=utf-8");

      // 8 发送:坐火箭
      Transport transport = session.getTransport("smtp");// 参数不能少,表示的是发送协议
      // 登录邮箱,此处的密码是授权码
      transport.connect(username, password);
      transport.sendMessage(message, message.getAllRecipients());
      transport.close();

      System.out.println("ok");
   }
   
   public static void main(String[] args) {
      try {
         MailUtil.sendMail("333@qq.com", "激活测试", "test");
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
   
}

1.3、工具类测试

使用main方法进行测试。

public static void main(String[] args) {
    try {
        MailUtil.sendMail("333@qq.com", "激活测试", "test");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

2、客户注册时,发送祝贺邮件

在这里插入图片描述

到此这篇关于基于JavaMail的Java邮件发送的文章就介绍到这了,更多相关Java Mail内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Springboot集成kafka高级应用实战分享

    Springboot集成kafka高级应用实战分享

    这篇文章主要介绍了Springboot集成kafka高级应用实战分享,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • 详解Java如何实现FP-Growth算法

    详解Java如何实现FP-Growth算法

    学校里的实验,要求实现FP-Growth算法.FP-Growth算法比Apriori算法快很多(但是却比不上时间)在网上搜索后发现Java实现的FP-Growth算法很少,且大多数不太能理解):太菜.所以就自己实现了一下.这篇文章重点介绍一下我的Java实现 ,需要的朋友可以参考下
    2021-06-06
  • mybatis源码解读之executor包语句处理功能

    mybatis源码解读之executor包语句处理功能

    这篇文章主要介绍了executor包语句处理功能,mybatis中支持三种语句类型,不同语句类型支持的变量符号不同,下文详细内容,需要的小伙伴可以参考一下
    2022-02-02
  • 一篇文章教你使用SpringBoot如何实现定时任务

    一篇文章教你使用SpringBoot如何实现定时任务

    这篇文章主要给大家介绍了关于如何利用一篇文章教你使用SpringBoot实现定时任务的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Java String字符串和Unicode字符相互转换代码

    Java String字符串和Unicode字符相互转换代码

    这篇文章主要介绍了Java String字符串和Unicode字符相互转换代码,需要的朋友可以参考下
    2014-10-10
  • Java修饰符abstract与static及final的精华总结

    Java修饰符abstract与static及final的精华总结

    abstract、static、final三个修饰符是经常会使用的,对他们的概念必须非常清楚,弄混了会产生些完全可以避免的错误,比如final和abstract不能一同出现,static和abstract不能一同出现,下面我们来详细了解
    2022-04-04
  • SpringCloud+RocketMQ实现分布式事务的实践

    SpringCloud+RocketMQ实现分布式事务的实践

    分布式事务已经成为了我们的经常使用的。所以我们来一步一步的实现基于RocketMQ的分布式事务。感兴趣的可以了解一下
    2021-10-10
  • java中的DTO的使用示例

    java中的DTO的使用示例

    在Java中,DTO代表数据传输对象,本文主要介绍了java中的DTO的使用示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Java 括号匹配问题案例详解

    Java 括号匹配问题案例详解

    这篇文章主要介绍了Java 括号匹配问题案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • SpringMVC自定义拦截器实现过程详解

    SpringMVC自定义拦截器实现过程详解

    这篇文章主要介绍了SpringMVC自定义拦截器实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05

最新评论