Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
继续接收javax.mail.Session$1:method<;初始化>;()尝试使用Springboot+;发送电子邮件时未找到V;mvc_Java_Spring Boot_Spring Mvc_Jakarta Mail - Fatal编程技术网

继续接收javax.mail.Session$1:method<;初始化>;()尝试使用Springboot+;发送电子邮件时未找到V;mvc

继续接收javax.mail.Session$1:method<;初始化>;()尝试使用Springboot+;发送电子邮件时未找到V;mvc,java,spring-boot,spring-mvc,jakarta-mail,Java,Spring Boot,Spring Mvc,Jakarta Mail,这是tht生成错误的代码: import com.cisco.s3.util.Logging; import javax.mail.internet.MimeMessage; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springfra

这是tht生成错误的代码:

import com.cisco.s3.util.Logging;
import javax.mail.internet.MimeMessage;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class EmailController {

    private static final Logger log = Logging.getLogger(EmailController.class);

    @Autowired
    private JavaMailSender sender;

    @RequestMapping("/simpleemail")
    @ResponseBody
    String home() {
        try {
            sendEmail();
            return "Email Sent!";
        }catch(Exception ex) {
            return "Error in sending email: " + ex;
        }
    }

    private void sendEmail() throws Exception{
        MimeMessage message = sender.createMimeMessage();

        // Enable the multipart flag!
        MimeMessageHelper helper = new MimeMessageHelper(message,true);

        helper.setTo("arterome@cisco.com");
        helper.setFrom("security-orchestration@cisco.com");
        helper.setText("How are you?");
        helper.setSubject("Hi");

        ClassPathResource file = new ClassPathResource("cat.jpg");
        helper.addAttachment("eagle.jpg", file);

        sender.send(message);
    }
}
错误很长,让我再加上一点:

```
[ERROR] 2019-05-22 09:14:17 @ org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: javax.mail.Session$1: method <init>()V not found] with root cause
java.lang.NoSuchMethodError: javax.mail.Session$1: method <init>()V not found
    at javax.mail.Session.<clinit>(Session.java:240) ~[soar-toolbox-2.0.0-beta.31.jar!/:na]
    at org.springframework.mail.javamail.JavaMailSenderImpl.getSession(JavaMailSenderImpl.java:161) ~[spring-context-support-5.0.11.RELEASE.jar!/:5.0.11.RELEASE]
    at org.springframework.mail.javamail.JavaMailSenderImpl.createMimeMessage(JavaMailSenderImpl.java:339) ~[spring-context-support-5.0.11.RELEASE.jar!/:5.0.11.RELEASE]
    at com.cisco.s3.controller.EmailController.sendEmail(EmailController.java:44) ~[classes!/:na]
    at com.cisco.s3.controller.EmailController.home(EmailController.java:36) ~[classes!/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_191]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_191]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_191]
    ```
从一周前开始,我一直试图解决这个问题,但没有成功


谢谢

不确定确切的问题是什么,但我可以想象,您没有使用javax.mail.Session对象设置邮件帐户。文档可在此处找到:

您应该能够使用以下属性更新/src/main/resources/application.properties:

  • spring.mail.host=smtp.gmail.com
  • spring.mail.port=587
  • spring.mail.username=您的电子邮件
  • spring.mail.password=您的电子邮件通行证
  • spring.mail.properties.mail.smtp.auth=true
  • spring.mail.properties.mail.smtp.starttls.enable=true
有了这个,你还需要确保你的电子邮件提供商(在上面的例子中是gmail)被设置为,我相信它被称为-‘服务电子邮件’

我还建议进行一些改进:

  • @控制器还应该在类级别用@RequestMapping注释
  • 如果这是一个由@RequestMappings上的@ResponseBody表示的API,我建议将该类切换到@RestController并删除@ResponseBody

  • NoSuchMethodError
    表示
    com.cisco.s3:soar toolbox:2.0.0-beta.31
    依赖项与您正在运行的
    javax.mail
    版本不兼容


    soar toolbox
    看起来是专有的,因此您必须参考Cisco提供的文档,以查看支持哪些Java和Java EE版本。

    我做了一些更改,但结果似乎相同,我现在使用的是SimpleEmailMessage,但错误完全相同,这很奇怪,因为我没有使用
    javax.mail.Session
    我会建议去掉soar工具箱依赖项-看看会发生什么,然后从那里开始。检查可传递的依赖项,确保没有引入两个不同版本的JavaMail。还要检查您的Linux系统上是否没有安装JavaMail的GNU类路径版本。
    dependencies {
        compile 'com.cisco.s3:soar-toolbox:2.0.0-beta.31'
        compile 'org.apache.tomcat.embed:tomcat-embed-jasper'
        compile 'org.slf4j:jcl-over-slf4j'
        compile 'org.slf4j:jul-to-slf4j'
        compile 'org.springframework.boot:spring-boot-starter-actuator'
        compile 'org.springframework.boot:spring-boot-starter-security'
        compile 'org.springframework.boot:spring-boot-starter-web'
        compile'org.springframework.boot:spring-boot-starter-mail'
        compile 'org.springframework.security:spring-security-ldap'
        compile group: 'org.mongodb', name: 'mongo-java-driver', version: '3.10.2'
        testCompile 'org.springframework.boot:spring-boot-starter-test'
        testCompile 'org.springframework.security:spring-security-test'
    }