:
public interface MailSenderService {
void sendEmail(String to, String from, String subject, String body); }
메일 보낸 사람 클래스 드디어
@Service
public class MailSenderServiceImpl implements MailSenderService {
private static final Logger logger = LoggerFactory.getLogger(MailSenderServiceImpl.class);
@Autowired
private JavaMailSender javaMailSender;
@Autowired
Configuration freemarkerConfiguration;
private SimpleMailMessage composeMail(String to, String from, String subject, String body) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject(subject);
message.setText(body);
return message;
}
@Override
public void sendEmail(String to, String from, String subject, String body) {
sendMessage(composeMail(to, from, subject, body));
}
@Async
private void sendMessage(SimpleMailMessage message) {
Assert.notNull(javaMailSender, "Email Sender must not be null");
javaMailSender.send(message);
}}
그리고는 통과하지 않는 통합 테스트입니다. 통합 테스트에서 전자 메일을 보내려면 JavaMailSender가 로컬 구성을 사용하도록 구성해야합니다. 5555 : : 예를 들어, 로컬 호스트에 의해
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost("localhost");
javaMailSender.setPort(5555);
그런 다음, 당신은 당신의 테스트에 직접 라이브러리 subethasmtp을 사용하여 서버의 SMTP를 만들 수 있습니다. smtp.host = SMTP :
@Rule
public SMTPServerRule smtpServerRule = new SMTPServerRule("localhost", 5555);
@Test
public void sendEmail() {
mailSenderService.sendEmail("[email protected]", "[email protected]", "Test Subject", "Test Body");
flushAndClear();
List<WiserMessage> messages smtpServerRule.getMessages();
}
내가 보내는 메일 이러한 속성을 사용 : 그래서
는, 당신은 당신의 통합 테스트에 그런 일을 수행 할 수 있습니다 나는 PERSONNALY 것을 할 수있는의 JUnit 규칙을 만들 .gmail.com smtp.port = 587 [email protected] smtp.password = aaa12345678 $ – Mary
테스트 실행 중 MailAuthenticationException이 발생합니다. – Mary