Java实现发送邮箱邮件和验证码

在通过Java实现使用邮箱发送邮件和验证码之前需要先注册一个邮箱并开启邮箱的SMTP服务,并且还要获得对应的服务授权码(密码)


本文中通过使用Apache Commons Email依赖来实现上述功能

  • 首先导入依赖

        <!--Apache Commons Email-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-email</artifactId>
            <version>1.5</version>
        </dependency>

发送邮件

  • :email.setStartTLSEnabled(true) 如果不是微软 Outlook 邮箱不要启用这个方法,我个人用的是微软 Outlook 邮箱

    public void sendEmail() throws EmailException {
        HtmlEmail email = new HtmlEmail();//创建对象
        email.setCharset("utf-8");//字符类型
        email.setHostName("smtp.office365.com");//邮箱的SMTP服务器地址
        email.setSmtpPort(587);//配置端口号(默认25)有的邮箱平台关闭了25端口号,如果用默认端口号可能会导致某些平台的SMTP服务器连接失败
        email.setStartTLSEnabled(true);//开启STARTTLS,微软Outlook邮箱加密方式是STARTTLS,如果不开启会导致连接失败(如果是用QQ邮箱或网易邮箱就删掉这个方法)
        email.setFrom("xxx@outlook.com","服务团队");//发送人邮箱;用户名(可以随便填)
        email.setAuthentication("xxx@outlook.com","adhrwjskwixyfrlb");//发件人邮箱;密码(授权码)
        email.addTo("xxx@outlook.com");//收件人邮箱
        email.setSubject("标题");//邮件标题
        email.setMsg("测试内容<br>测试内容<br>测试内容<br>测试内容");//邮件内容
        email.send();//发送邮件
    }

发送验证码

    public void sendCode() throws EmailException {
        Random random = new Random();
        String code = "";
        for(int i = 0; i<6; i++){
            code += random.nextInt(10);//生成0-9的随机数,并循环生成6位
        }
        HtmlEmail email = new HtmlEmail();//创建对象
        email.setCharset("utf-8");//字符类型
        email.setHostName("smtp.office365.com");//邮箱的SMTP服务器地址
        email.setSmtpPort(587);//配置端口号(默认25)有的邮箱平台关闭了25端口号,如果用默认端口号可能会导致某些平台的SMTP服务器连接失败
        email.setStartTLSEnabled(true);//开启STARTTLS,微软Outlook邮箱加密方式是STARTTLS,如果不开启会导致连接失败(如果是用QQ邮箱或网易邮箱就删掉这个方法)
        email.setFrom("xxx@outlook.com","服务团队");//发送人邮箱;用户名(可以随便填)
        email.setAuthentication("xxx@outlook.com","adhrwjskwixyfrlb");//发件人邮箱;密码(授权码)
        email.addTo("xxx@xxx.com");//收件人邮箱
        email.setSubject("标题");//邮件标题
        email.setMsg("验证码:"+code);//邮件内容
        email.send();//发送邮件
    }

成功发送截图

我个人其实并不是很推荐用微软 Outlook 邮箱,因为访问速度没有国内的邮箱快,导致发送邮件比较慢,但奈何 QQ 邮箱发的邮件又很容易进垃圾箱,因此只好使用微软邮箱。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
首先需要引入JavaMail API和Java Activation Framework (JAF)的包。 以下是一个简单的Java代码示例,用于从QQ邮箱发送验证码邮件: ```java import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class SendEmail { public static void main(String[] args) { final String username = "your_qq_email@qq.com"; final String password = "your_email_password"; Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", "smtp.qq.com"); props.put("mail.smtp.port", "587"); Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress("your_qq_email@qq.com")); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient_email@example.com")); message.setSubject("Verification Code"); int code = 123456; // replace with actual code message.setText("Your verification code is: " + code); Transport.send(message); System.out.println("Code sent successfully!"); } catch (MessagingException e) { throw new RuntimeException(e); } } } ``` 在上面的代码中: - 将`your_qq_email@qq.com`替换为您的QQ邮箱地址。 - 将`your_email_password`替换为您的QQ邮箱密码。 - 将`recipient_email@example.com`替换为收件人的电子邮件地址。 - 将`123456`替换为实际的验证码。 运行代码后,您应该能够在收件人的邮箱中收到一封包含验证码的电子邮件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CVPlayer-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值