Я создал @Bean MailConfig, чтобы пользователь мог настраивать настройки SMTP, а не статически размещать их в файле application.properties проекта.
Проблема в том, что, хотя вся конфигурация загружается правильно, и электронные письма отправляются, когда я запускаю проект, но во время сборки получаю сообщение об ошибке:
Трассировка стека:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'javaMailSender' defined in class path resource [com/IOTProjectUI/config/MailConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.mail.javamail.JavaMailSender]: Factory method 'javaMailSender' threw exception; nested exception is java.lang.IllegalStateException: SMTP preferences are not set correctly.
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:486)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1389)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:656)
... 100 more
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.mail.javamail.JavaMailSender]: Factory method 'javaMailSender' threw exception; nested exception is java.lang.IllegalStateException: SMTP preferences are not set correctly.
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
... 113 more
Caused by: java.lang.IllegalStateException: SMTP preferences are not set correctly.
at com.IOTProjectUI.config.MailConfig.javaMailSender(MailConfig.java:44)
at com.IOTProjectUI.config.MailConfig$$EnhancerBySpringCGLIB$$8d71899e.CGLIB$javaMailSender$0()
at com.IOTProjectUI.config.MailConfig$$EnhancerBySpringCGLIB$$8d71899e$$FastClassBySpringCGLIB$$22288389.invoke()
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
at com.IOTProjectUI.config.MailConfig$$EnhancerBySpringCGLIB$$8d71899e.javaMailSender()
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
... 114 more
Это MailConfig:
@Configuration
public class MailConfig {
private static final Logger logger = LoggerFactory.getLogger(MailConfig.class);
@Bean
public JavaMailSender javaMailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
CiPreferences.readPreferences();
String host = CiPreferences.properties.get("smtpHost");
String portStr = CiPreferences.properties.get("smtpPort");
String username = CiPreferences.properties.get("smtpUsername");
String password = CiPreferences.properties.get("smtpPassword");
String auth = CiPreferences.properties.get("smtpAuth");
String starttls = CiPreferences.properties.get("smtpStarTtls");
if (host == null || portStr == null || username == null || password == null || auth == null || starttls == null) {
throw new IllegalStateException("SMTP preferences are not set correctly.");
}
int port;
try {
port = Integer.parseInt(portStr);
} catch (NumberFormatException e) {
throw new IllegalStateException("Invalid SMTP port: " + portStr, e);
}
mailSender.setHost(host);
mailSender.setPort(port);
mailSender.setUsername(username);
mailSender.setPassword(password);
Properties props = mailSender.getJavaMailProperties();
props.put("mail.smtp.auth", Boolean.parseBoolean(auth));
props.put("mail.smtp.starttls.enable", Boolean.parseBoolean(starttls));
props.put("mail.debug", "true");
return mailSender;
}
Как я уже сказал, когда я запускаю, электронные письма отправляются. Это файл конфигурации:
smtpHost=[email protected]
smtpPort=25
smtpUsername=[email protected]
smtpPassword=
smtpAuth=false
smtpStarTtls=true
smtpSender=[email protected]
Подробнее здесь: https://stackoverflow.com/questions/786 ... ences-from
JavaMailSender выдал исключение при создании проекта с использованием настроек SMTP из внешнего файла ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
FreeMarker JavaMailSender Проблема с символами /n и /t в содержимом почты
Anonymous » » в форуме JAVA - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-