javaMail JavaMailSender 没有邮件服务器?暂时使用本地MailHog调试邮件

2024年6月20日
MailHog下载启动
1025是smpt服务端口,8025是web访问端口
在这里插入图片描述
在这里插入图片描述
主要的两个代码函数

    public void sendEmailWithFile(SendEmailInfo info) throws MessagingException, UnsupportedEncodingException {
        // 创建一个邮件消息
        MimeMessage message = getJavaMailSender().createMimeMessage();
        // 创建 MimeMessageHelper,指定 boolean multipart 参数为 true
        MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
        // 发件人邮箱和名称
        helper.setFrom(username);
        // 收件人邮箱
        helper.setTo(info.getEmail());
        // 邮件标题
        helper.setSubject(info.getTitle());
        // 邮件正文,第二个参数表示是否是HTML正文
        helper.setText(info.getContent(), info.getCheckHtml());
// 附件有报错先不加 =============
        // 添加附件,指定附件名称、文件的 Inputstream 流 以及 Content-Type
        // Map<String, InputStream> fileMap = info.getFileMap();
        // for (Map.Entry<String, InputStream> entry : fileMap.entrySet()) {
        //     String fileName = entry.getKey();
        //     InputStream input = entry.getValue();
        //     helper.addAttachment(fileName,
        //             () -> input,
        //             "application/octet-stream");
        // }
        JavaMailSenderImpl sender = getJavaMailSenderDEBUGMailHog();
        // 发送
        sender.send(message);
    }


private JavaMailSenderImpl getJavaMailSenderDEBUGMailHog() {
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
        sender.setHost("127.0.0.1");              // 设置邮箱服务器
        sender.setPort(1025);                        // 设置端口
        sender.setUsername(null);    // 设置用户名 mailhog不用
        sender.setPassword(null);      // 设置密码 mailhog不用
        sender.setProtocol("smtp");     // 设置协议  其他的不支持,包括smtps
        
        Properties properties = new Properties();           // 配置项
        properties.put("mail.smtp.auth", false);
        properties.put("mail.smtp.timeout", "25000");
        properties.put("mail.smtp.starttls.enable", "false"); // 关闭STARTTLS
        properties.put("mail.smtp.ssl.enable", "false"); // 关闭SSL
        sender.setJavaMailProperties(properties); // 设置配置项

        return sender;
    }

发送后,http://localhost:8025
在这里插入图片描述
然后解决附件报错的问题
上面代码示例里注掉的附件换成这种方式好了

// 添加附件,指定附件名称、文件
        for (File f : info.getFileList()) {
            helper.addAttachment(f.getName(), f);
        }

Mailhog下载附件的位置:
在这里插入图片描述
不合适的地方请评论指正
点个赞再走👍
点个赞再走👍
点个赞再走👍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值