Spring Boot - возможно ли отправлять почту только с хоста SMTP? - PullRequest
0 голосов
/ 04 мая 2020

Я очень новичок, и я хотел бы знать, можно ли отправлять почту только с именем хоста SMTP. Вот мой код:

Класс почты

public class Mail {
  private String mailTo;
  private String mailFrom;
  private String suject;
  private String mailContent;
  private String contentType;

  public Mail() {
      contentType = "text/plain";
}

//GETTERS & SETTERS 
}

Конфигурация почты

@Configuration
public class MailConfiguration {
   @Value("${spring.mail.host}")
   private String smtpHost;

   @Bean
   public JavaMailSender getMailSender() {
      JavaMailSenderImpl mailSender = new JavaMailSenderImpl();

      mailSender.setHost(smtpHost);
    //mailSender.setPort();
    //mailSender.setUsername();
    //mailSender.setPassword();

      Properties javaMailProperties = new Properties();
    /***NOT SURE ABOUT BELOW PROPERTIES***/
    //javaMailProperties.put("mail.smtp.starttls.enable", "true");
    javaMailProperties.put("mail.smtp.auth", "false");
    //javaMailProperties.put("mail.transport.protocol", "smtp");
    //javaMailProperties.put("mail.debug", "true");

      mailSender.setJavaMailProperties(javaMailProperties);

      return mailSender;
   }
}

Почта

@Service("mailService")
public class MailServiceImpl implements MailService {

  @Autowired
  JavaMailSender mailSender;

  public void sendEmail(Mail mail) {
      MimeMessage mimeMessage = mailSender.createMimeMessage();

      try {

          MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);

          mimeMessageHelper.setSubject(mail.getMailSubject());
          mimeMessageHelper.setFrom(new InternetAddress(mail.getMailFrom(), "whats here?"));
          mimeMessageHelper.setTo(mail.getMailTo());
          mimeMessageHelper.setText(mail.getMailContent());

          mailSender.send(mimeMessageHelper.getMimeMessage());

      } catch (MessagingException e) {
          e.printStackTrace();
      } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
      }
    }

 }

Класс приложения

@SpringBootApplication
public class Application {
   public static void main(String[] args) {

       Mail mail = new Mail();
       mail.setMailFrom("sender@demo.com");
       mail.setMailTo("recipient@demo.com");
       mail.setMailSubject("Mail subject");
       mail.setMailContent("Mail body...");

       ApplicationContext ctx = SpringApplication.run(Application.class, args);
       MailService mailService = (MailService) ctx.getBean("mailService");
       mailService.sendEmail(mail);

   }
 }

application.properties

spring.mail.host=some.mail.host.com

Я написал весь код. Но у меня есть только информация о хосте SMTP. Прежде всего, это возможно, чтобы отправить почту только с этим свойством. Если так, что я делаю не так? Я получаю исключение NullPointerException. Помощь будет принята с благодарностью. Заранее спасибо!

...