邮箱组件

tio-utils 内置了邮箱工具类 com.litongjava.tio.utils.email.EMailUtils 用于支持发送邮件

添加依赖

<dependency>
  <groupId>javax.mail</groupId>
  <artifactId>mail</artifactId>
  <version>1.5.0-b01</version>
</dependency>

发送邮件

使用网易 126 发送邮件

app.properties

mail.host=smtp.126.com
mail.protocol=smtp
mail.smpt.port=465
mail.user=litongjava_alarm@126.com
mail.password=g8NmXf6hcy9NexE
mail.from=litongjava_alarm

测试发送

String filename = "app.properties";
EnvUtils.load(filename);
EMailUtils.send("litongjava@qq.com", "验证码", "欢迎你登录XXX系统,你的验证码是 1234");

默认整合的邮箱是 网易 126 邮箱服务

使用 Gmail 发送邮件

app.properties

mail.host=smtp.gmail.com
mail.protocol=smtp
mail.smpt.port=465
mail.user=smtp_xxx@gmail.com
mail.password=xxxx xxxx xxxx xxxx
mail.from=smtp_alarm

import com.litongjava.tio.utils.email.EMailUtils;
import com.litongjava.tio.utils.email.GMailFactory;
import com.litongjava.tio.utils.environment.EnvUtils;

public class GmailTest {
  public static void main(String[] args) {
    EnvUtils.load("app.properties");
    EMailUtils.setEMailFactory(new GMailFactory());
    EMailUtils.send("litongjava001@gmail.com", "Adsgency AI Email Verification", "Your email verification code is 164403");
  }
}

获取 Gmail 授权码

步骤

  • 开启 google 两步验证
  • 获取授权码 不开启 google 两步验证的情况下,无法获取邮箱专用的授权码的,开启 google 两步验证需要绑定手机号

开启 google 两步验证

  1. 登录您的 Google 账户:

  2. 访问安全性设置:

    • 在 Google 账户主页上,点击左侧菜单的“安全性”选项。
  3. 找到“两步验证”: - 在“安全性”页面中,向下滚动直到您看到“登录到 Google”部分。 - 在那里,您会找到“两步验证”选项。点击“两步验证”。可能需要您输入密码再次确认身份。 https://myaccount.google.com/signinoptions/two-step-verification/enroll-welcome

  4. 开始设置两步验证:

    • 点击“开始”或“设置”开始两步验证的设置过程。
  5. 添加您的电话号码:

    • 按照屏幕上的指示添加您的电话号码。您可以选择接收验证码的方式,通常是短信或电话呼叫。
    • 输入您收到的验证码以确认电话号码的正确性。
  6. 完成设置:

    • 按照屏幕上的指示完成剩余的步骤。一旦设置成功,您将看到一个确认屏幕。
  7. (可选)添加备用验证选项:

    • 在设置了基本的电话验证之后,您还可以添加备用验证方法,例如备用电话号码、Google 提示信息、或使用 Google Authenticator 等应用生成的验证码。
  8. 生成应用程序专用密码:

    • 在您开启两步验证之后,如果您要在邮件客户端等应用中使用 Gmail,您可能需要生成一个应用程序专用的密码。这可以在您的 Google 账户的安全性部分找到,通常在“密码与登录方式”或“应用程序专用密码”部分。
    • 选择“管理应用程序专用密码”或类似选项,然后按照指示生成一个密码。这个密码将在生成时显示一次,不会再次显示,所以请在使用时确保复制并保存好。
  9. 访问 Google 账户设置:

  10. 进入安全性设置:

    • 在 Google 账户主页上,点击左侧菜单的“安全性”选项。
  11. 找到“应用程序专用密码”部分:

    • 在“安全性”页面中,向下滚动直到您看到“登录到 Google”部分。
    • 找到“应用程序专用密码”或类似的选项(这个选项只有在您已经开启两步验证后才会出现)。
  12. 生成应用程序专用密码:

    • 点击“应用程序专用密码”或类似选项。
    • 您可能需要再次输入您的账户密码进行确认。
    • 在显示的界面中,选择“选择应用”和“选择设备”来指定您要使用授权码的应用程序和设备。
    • 点击“生成”按钮,系统将为您生成一个 16 位数的授权码。
  13. 使用授权码:

    • 将生成的授权码复制下来。请注意,授权码只显示一次,所以确保在关闭窗口前复制它。
    • 在需要输入密码的地方,如邮件客户端或其他应用程序的登录界面,输入这个授权码代替您的 Google 账户密码。

获取授权码

  1. 访问 Google 账户设置:

  2. 进入安全性设置:

    • 在 Google 账户主页上,点击左侧菜单的“安全性”选项。
  3. 找到“应用程序专用密码”部分:

    • 在“安全性”页面中,向下滚动直到您看到“登录到 Google”部分。
    • 找到“应用程序专用密码”或类似的选项(这个选项只有在您已经开启两步验证后才会出现)。
  4. 生成应用程序专用密码:

    • 点击“应用程序专用密码”或类似选项。https://myaccount.google.com/signinoptions/two-step-verification
    • 您可能需要再次输入您的账户密码进行确认。
    • 在显示的界面中,选择“选择应用”和“选择设备”来指定您要使用授权码的应用程序和设备。
    • 点击“生成”按钮,系统将为您生成一个 16 位数的授权码。
  5. 使用授权码:

    • 将生成的授权码复制下来。请注意,授权码只显示一次,所以确保在关闭窗口前复制它。
    • 在需要输入密码的地方,如邮件客户端或其他应用程序的登录界面,输入这个授权码代替您的 Google 账户密码。

使用自定义邮箱

    1. 实现类 com.litongjava.tio.utils.email.EMail 重写 send 方法
  • 2.实现类 com.litongjava.tio.utils.email.IEMailFactory 重写 getMail 方法 返回 Mail
    1. 调用 com.litongjava.tio.utils.email.EMailUtils.setEMailFactory(IEMailFactory) 设置实现类
package com.litongjava.tio.utils.email;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import com.litongjava.tio.utils.IoUtils;
import com.litongjava.tio.utils.environment.EnvUtils;

public class Wangyi126Mail implements EMail {

  /**
   * 发送邮件
   * @param to 收件人
   * @param subject 主题
   * @param content 内容
   * @paaram isDebug 是否开启debug模式
   */
  public void send(String to, String subject, String content, boolean isDebug) {
    String mailHost = EnvUtils.get("mail.host");
    String mailTransportProtocol = EnvUtils.get("mail.protocol");

    Integer smtpPort = EnvUtils.getInt("mail.smpt.port");
    String user = EnvUtils.get("mail.user");
    String password = EnvUtils.get("mail.password");
    String from = EnvUtils.get("mail.from");
    ....

  }
}

package com.litongjava.tio.utils.email;

public class Wangyi126MailFactory implements IEMailFactory {

  @Override
  public EMail getMail() {
    return new Wangyi126Mail();
  }
}