Я создал @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=stest@test.com
smtpPort=25
smtpUsername=test@test.com
smtpPassword=
smtpAuth=false
smtpStarTtls=true
smtpSender=test@test.com
Подробнее здесь: https://stackoverflow.com/questions/786 ... ences-from
JavaMailSender выдал исключение при создании проекта с использованием настроек SMTP из внешнего файла ⇐ JAVA
Программисты JAVA общаются здесь
1718978809
Anonymous
Я создал @Bean MailConfig, чтобы пользователь мог настраивать настройки SMTP, а не статически размещать их в файле application.properties проекта.
Проблема в том, что, хотя вся конфигурация загружается правильно, и электронные письма отправляются, когда я запускаю проект, но во время сборки получаю сообщение об ошибке:
[b]Трассировка стека:[/b]
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=stest@test.com
smtpPort=25
smtpUsername=test@test.com
smtpPassword=
smtpAuth=false
smtpStarTtls=true
smtpSender=test@test.com
Подробнее здесь: [url]https://stackoverflow.com/questions/78652822/javamailsender-threw-exception-when-building-project-using-smtp-preferences-from[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия