Как решить это NumberFormatException в весенней загрузке с обратной связью mailsender - PullRequest
0 голосов
/ 08 ноября 2019
package yash.noteappapi.mail;

import org.springframework.core.env.Environment;

import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Component;

@Component
public class FeedbackMailSender implements FeedbackSender
{
  private JavaMailSenderImpl mailSender;

  public FeedbackMailSender(Environment environment){
    mailSender = new JavaMailSenderImpl();

    mailSender.setHost(environment.getProperty("spring.mail.host"));
    mailSender.setPort(Integer.parseInt(environment.getProperty("string.mail.port")));
    mailSender.setUsername(environment.getProperty("string.mail.username"));
    mailSender.setPassword(environment.getProperty("spring.mail.password"));
}

  @Override
  public void sendFeedback(String from, String name, String feedback) {
    SimpleMailMessage message = new SimpleMailMessage();
     message.setTo("feedback@noteapp.com");
     message.setSubject("New feedback from " + name);
     message.setText(feedback);
     message.setFrom(from);

    this.mailSender.send(message);
 }
}

Это дает ошибку

Исключение в конструкторе;Вложенное исключение - java.lang.NullPointerException. Вызвано: java.lang.NullPointerException: null

Кажется, что это вызвано Integer.parseInt(), но порт не будет установлен без анализа его, так как порт являетсязначение int, как решить эту проблему

1 Ответ

1 голос
/ 08 ноября 2019

У вас есть опечатка в этих двух строках:

mailSender.setPort(Integer.parseInt(environment.getProperty("string.mail.port")));
mailSender.setUsername(environment.getProperty("string.mail.username"));

Это должно быть spring.mail.port и spring.mail.username

Если свойства окружения не существуют, они разрешаются до нуля, давая вам NPE в Integer.parseInt()

...