找不到类型为“org.springframework.mail.javamail.JavaMailSender”的bean

Sha*_*ndu 3 spring-boot

我正在使用spring boot 2.0.7 Releasespring-boot-starter-mail-2.0.7.Release.

javaMailsender在班级内部自动装配在 Windows 上工作正常,同时尝试部署解决Unixbelwo 问题


APPLICATION FAILED TO START
***************************

Description:

Field javaMailSender in com.fti.di.capstock.tran.pub.email.SendEmail required a bean of type 'org.springframework.mail.javamail.JavaMailSender' that could not be found.

The injection point has the following annotations:
        - @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'org.springframework.mail.javamail.JavaMailSender' in your configuration.
Run Code Online (Sandbox Code Playgroud)
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.mail.javamail.MimeMessageHelper;
    import org.springframework.messaging.Message;
    import org.springframework.messaging.MessagingException;
    import org.springframework.stereotype.Component;

    import com.fti.di.capstock.tran.pub.constants.ApplicationFlowConstants;
    import com.fti.di.integration.constants.IntegrationConstants;
    import com.fti.di.integration.util.StringUtil;

    @Component("sendEmail")
    public class SendEmail {

        @Autowired
        private JavaMailSender javaMailSender;

        @Autowired
        Environment env;

        @ServiceActivator
Run Code Online (Sandbox Code Playgroud)

小智 12

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;

@Configuration
public class Config {

    @Bean
    public JavaMailSender javaMailSender() {
        return new JavaMailSenderImpl();
    }

}
Run Code Online (Sandbox Code Playgroud)

JavaMailSenderImpl()您还可以从上面返回一个实例,@Bean这样当您尝试返回实际的类时,就不必实现一堆方法了JavaMailSender()


Sam*_*eim 11

您必须在application.properties中提供邮件配置

spring.mail.host=MAIL_SERVER_IP
spring.mail.port=MAIL_SERVER_PORT
spring.mail.userName=USER_NAME
spring.mail.password=THE_PASSWORD
Run Code Online (Sandbox Code Playgroud)

如果服务器中未启用身份验证,则删除用户名和密码并添加此内容

spring.mail.properties.mail.smtp.auth=false
spring.mail.properties.mail.smtp.starttls.enable=false
Run Code Online (Sandbox Code Playgroud)


Tha*_*ssi 6

JavaMailSender在 Configuration 类中声明该类型的 @Bean (当您想要注入一个不属于 Spring Context 的类时,这很有用,例如属于 3rd-party lib 的类,这恰好是您的情况) . 例如:

@Configuration
public class MyConfig {

    @Bean
    public JavaMailSender javaMailSender() { 
          return new JavaMailSender();
    }
}
Run Code Online (Sandbox Code Playgroud)

确保您也设置了正确的属性application.properties

另外,看看这个问题,因为我相信这是重复的(如果不是,我很抱歉)