开发者社区 问答 正文

javamail通过阿里云邮发送邮件连接失败

@RequestMapping(value = "/testSendMail.jspx", method = RequestMethod.GET)
    public void testSendMail(HttpServletRequest request, HttpServletResponse respone) {
        Website web = SiteUtils.getWeb(request);
        //final EmailSender email = web.getEmailSender();
        final MessageTemplate tpl = (MessageTemplate) web.getMessages().get(MessageTemplate.RESET_PASSWORD);
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
        sender.setHost("smtp.aliyun.com");
        sender.setUsername(" tang.xin@gzstone.com.cn");
        sender.setPassword("********");//发帖时故意隐藏
        sender.send(new MimeMessagePreparator() {
            public void prepare(MimeMessage mimemessage) {
                try {
                     MimeMessageHelper msg = new MimeMessageHelper(mimemessage, false, "UTF-8");
                     msg.setSubject("这是一份测试邮件");
                     msg.setTo(" 1292785717@qq.com");
                     msg.setFrom("Sender", "Sender");
                     String text = tpl.getActiveTxt();
                     text = StringUtils.replace(text, "${userName}","testUser01");
                     text = StringUtils.replace(text, "${usernameId}", "1");
                     text = StringUtils.replace(text, "${activationCode}", "1236585");
                     text = StringUtils.replace(text, "${base}", "Base");
                     msg.setText(text,true);
                } catch(Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

展开
收起
tang2016 2016-04-18 15:03:16 4837 分享 版权
阿里云 AI 助理回答

这段代码是一个使用Java Spring框架的控制器方法,用于发送测试邮件。它从一个网站配置对象(Website web)中获取信息,并使用JavaMailSender接口来实现邮件发送功能。具体来说,这个方法做了以下几件事:

  1. 获取站点配置:通过SiteUtils.getWeb(request)获取当前站点的配置信息。
  2. 设置邮件发送器:虽然注释掉了直接从站点配置获取EmailSender的部分,但随后手动创建了一个JavaMailSenderImpl实例并配置了SMTP服务器的相关信息。这里使用的是阿里云的SMTP服务器地址smtp.aliyun.com
  3. 认证信息设置:设置了发件人的邮箱地址和密码(实际操作中应避免硬编码敏感信息)。
  4. 消息模板处理:从站点配置中获取了一个重置密码的消息模板,并对模板内容进行替换,如用户名、用户ID、激活码等。
  5. 发送邮件:通过匿名内部类实现了MimeMessagePreparator接口,用来准备邮件内容。包括设置邮件主题、收件人、发件人(显示名称和地址)、以及使用HTML格式的邮件正文。

注意事项:

  • 安全性:确保不将敏感信息如邮箱密码直接写在代码中,考虑使用环境变量或加密方式存储。
  • 异常处理:虽然有简单的异常打印,但在生产环境中可能需要更完善的日志记录和错误处理机制。
  • 资源管理:如果在生产环境中频繁发送邮件,考虑邮件发送服务的稳定性和速率限制。
  • 依赖注入:可以考虑使用Spring的依赖注入来管理JavaMailSender实例,而不是每次方法调用时新建,以提高效率和可维护性。
  • 异步发送:对于非即时响应要求的场景,可以考虑异步发送邮件,以避免阻塞主线程。

结合阿里云产品,你还可以考虑使用阿里云邮件推送服务(Direct Mail),它提供了API和SDK,能够更好地集成到应用中,且通常包含更高的发送成功率和更详细的发送报告。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: