Java 发送邮件教程

Java 发送邮件教程 前言

之前在写项目的时候,有关于用户注册的时候,使用邮箱和密码进行登录注册,我就想到了一个问题邮箱的验证可以通过正则表达式来进行匹配判断是否合理,但是如何判断邮箱是否可以用呢。我就想到能不能将验证码和邮箱结合起来,将验证码当作邮件发送注册的邮箱之中。

前期准备工作

首先需要将邮箱的 smtp 服务打开

我这里以QQ邮箱为例(腾讯打钱!)

登入账户后进入 设置=>账户=> POP3/IMAP/SMTP///服务

打开相对应的 SMTP 服务,按照网站的提示进行验证,会给你一个授权码,把授权码复制下来

有了这些东西,我们就可以开心的写代码了

代码 依赖

我是用 Boot 搭配 -boot–mail 进行实现的,maven如下

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

配置文件

然后就是 配置文件 的编写

spring:
  mail:
    # 主机名称,我这里用QQ的个人邮箱举例
    host: smtp.qq.com
    # 邮箱账号
    username: xxxxxxxx@qq.com
    # 刚刚获得的授权码
    password: shouquanma
    # 字符集
    default-encoding: UTF-8
    properties:
      mail:
        smtp:
          auth: true
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory
            # 发送的端口
            port: 465
        debug: true

Java 代码编写

到这里基本上就配置完成了java mail qq邮箱,然后就是代码编写的部分了java mail qq邮箱,这部分更简单了

因为 Boot 提供了一个发送邮件的接口 ,直接注入即可使用

package com.example.sendemail.service.impl;
import com.example.sendemail.service.EmailService;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.File;
/**
 * @description:
 * @author: xiaoming
 * @date: 2022/10/03 22:09
 */
@Service
@Slf4j
public class EmailServiceImpl implements EmailService {
    @Autowired
    private JavaMailSender mailSender;
    // 配置文件中配置的邮箱
    @Value("${spring.mail.username}")
    private String from;
    /**
     * 发送邮件
     * @param to 收件人
     * @param subject 主题
     * @param content 内容
     */
    @Override
    public void sendMail(String to, String subject, String content) {
        // 创建SimpleMailMessage对象
        SimpleMailMessage message = new SimpleMailMessage();
        // 设置邮件发送人
        message.setFrom(from);
        // 设置邮件接收人
        message.setTo(to);
        // 设置邮件主题
        message.setSubject(subject);
        // 设置邮件内容
        message.setText(content);
        // 设置发送邮件
        mailSender.send(message);
    }
}

测试

@SpringBootTest
class EmailServiceTest {
    @Autowired
    private EmailService emailService;
    @Test
    void sendSimpleMail() {
        String to = "xxxxxx@gmail.com";
        String subject = "验证码";
        String content = "测试邮件";
        emailService.sendMail(to,subject,content);
    }
}

然后成功了

外传 网易篇

虽然说成功了,但我是这么容易满足的人吗,当然不是。这样用户收到的邮件后缀要是是我们项目自己的域名该多好呀,然后我就想自己拿服务器搭一个,正按照网路上的教程进行到第一步Java 发送邮件教程,隔壁那天天打我服务器的狗看到了,跟我说可以拿网易企业邮箱搭建,我就浅浅试了一下。

不得不说,成功了,但是也没完全成功。。

确实可以发送也可以接收,只不过只限制在了网页中。

我将那些邮箱和密码粘贴到我的程序中,他告诉我

org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException: 535 5.7.0 LOGIN.PERMDENY

搜完了意思就是不允许客户端登录,按照官方给的教程去操作,结果

总结两个字充钱,emmmm

还得是你,让我狗格200块出仨头像java mail qq邮箱,让我炉石一张金色传说抽不到,呜呜呜

宝塔篇

既然网易不靠谱,那就换一个吧,抱着尝试的心态去搜了搜Java 发送邮件教程,发现宝塔里面有邮局可以用

在这里贴上官方教程链接 宝塔官方教程

进去搜索以后点击设置,按照其中的提示进行配置,将域名的 dns 记录按照上面的要求进行设置就好了

然后浅浅发了个测试邮件

搜了一下,发现国内的服务器 25 端口都是锁着的

然后我不死心的找朋友借了几个服务器发现都一样的效果,25 端口都是封着的。

虚拟机篇

既然外面的服务器都封 25 端口,那我自己弄一台总可以了吧

拿 开了台 7 ,按照上述的方式进行了一遍,一切顺利~!

最后附上一张昨晚实验成功的截图

还有一点,最好在配置邮局的时候添加一下证书,要不然大概率会被扔进垃圾邮件中

最后

感谢皮总的图床

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » Java 发送邮件教程

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们