邮箱组件
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 两步验证
登录您的 Google 账户:
- 访问 Google 账户 并登录。
访问安全性设置:
- 在 Google 账户主页上,点击左侧菜单的“安全性”选项。
找到“两步验证”: - 在“安全性”页面中,向下滚动直到您看到“登录到 Google”部分。 - 在那里,您会找到“两步验证”选项。点击“两步验证”。可能需要您输入密码再次确认身份。 https://myaccount.google.com/signinoptions/two-step-verification/enroll-welcome
开始设置两步验证:
- 点击“开始”或“设置”开始两步验证的设置过程。
添加您的电话号码:
- 按照屏幕上的指示添加您的电话号码。您可以选择接收验证码的方式,通常是短信或电话呼叫。
- 输入您收到的验证码以确认电话号码的正确性。
完成设置:
- 按照屏幕上的指示完成剩余的步骤。一旦设置成功,您将看到一个确认屏幕。
(可选)添加备用验证选项:
- 在设置了基本的电话验证之后,您还可以添加备用验证方法,例如备用电话号码、Google 提示信息、或使用 Google Authenticator 等应用生成的验证码。
生成应用程序专用密码:
- 在您开启两步验证之后,如果您要在邮件客户端等应用中使用 Gmail,您可能需要生成一个应用程序专用的密码。这可以在您的 Google 账户的安全性部分找到,通常在“密码与登录方式”或“应用程序专用密码”部分。
- 选择“管理应用程序专用密码”或类似选项,然后按照指示生成一个密码。这个密码将在生成时显示一次,不会再次显示,所以请在使用时确保复制并保存好。
访问 Google 账户设置:
- 登录您的 Google 账户,然后访问 Google 账户。
进入安全性设置:
- 在 Google 账户主页上,点击左侧菜单的“安全性”选项。
找到“应用程序专用密码”部分:
- 在“安全性”页面中,向下滚动直到您看到“登录到 Google”部分。
- 找到“应用程序专用密码”或类似的选项(这个选项只有在您已经开启两步验证后才会出现)。
生成应用程序专用密码:
- 点击“应用程序专用密码”或类似选项。
- 您可能需要再次输入您的账户密码进行确认。
- 在显示的界面中,选择“选择应用”和“选择设备”来指定您要使用授权码的应用程序和设备。
- 点击“生成”按钮,系统将为您生成一个 16 位数的授权码。
使用授权码:
- 将生成的授权码复制下来。请注意,授权码只显示一次,所以确保在关闭窗口前复制它。
- 在需要输入密码的地方,如邮件客户端或其他应用程序的登录界面,输入这个授权码代替您的 Google 账户密码。
获取授权码
访问 Google 账户设置:
- 登录您的 Google 账户,然后访问 Google 账户。
进入安全性设置:
- 在 Google 账户主页上,点击左侧菜单的“安全性”选项。
找到“应用程序专用密码”部分:
- 在“安全性”页面中,向下滚动直到您看到“登录到 Google”部分。
- 找到“应用程序专用密码”或类似的选项(这个选项只有在您已经开启两步验证后才会出现)。
生成应用程序专用密码:
- 点击“应用程序专用密码”或类似选项。https://myaccount.google.com/signinoptions/two-step-verification
- 您可能需要再次输入您的账户密码进行确认。
- 在显示的界面中,选择“选择应用”和“选择设备”来指定您要使用授权码的应用程序和设备。
- 点击“生成”按钮,系统将为您生成一个 16 位数的授权码。
使用授权码:
- 将生成的授权码复制下来。请注意,授权码只显示一次,所以确保在关闭窗口前复制它。
- 在需要输入密码的地方,如邮件客户端或其他应用程序的登录界面,输入这个授权码代替您的 Google 账户密码。
使用自定义邮箱
- 实现类 com.litongjava.tio.utils.email.EMail 重写 send 方法
- 2.实现类 com.litongjava.tio.utils.email.IEMailFactory 重写 getMail 方法 返回 Mail
- 调用 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();
}
}