2020년 2월 6일

자바에서 Office 365 을 이용한 메일 보내기 (How to send Office365 mail in Java)

스프링 기반의 웹 프로그램에서 메일 발송 기능을 구현하는 것은 쉽다.
그러나 Office 365 의 경우 다른 SMTP 메일 서버와 다르게 추가적인 설정과 제약사항이 존재한다.

Office 365 의 SMTP 설정 정보

  • 호스트 : smtp.office365.com
  • 포트 : 587
  • 암호화 : STAETTLS  

테스트 환경 

  • pc : MacBook Pro 2015
  • java : 1.8
  • spring framework : 4.3.23.RELEASE
  • java-mail : 1.5.6


다음은 위의 정보를 이용한 간단한 테스트 코드이다. 보안상 계정정보는 **으로 표기하였다.

package tests;

import java.util.Properties;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

public class JavaMailSendTest {
 
    public static void main(String[] args) throws Exception { 

 JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
 Properties javaMailProperties = new Properties();
 mailSender.setUsername("****");
 mailSender.setPassword("****"); 
 javaMailProperties.setProperty("mail.transport.protocol", "smtp");
 javaMailProperties.setProperty("mail.debug", "true");
 javaMailProperties.setProperty("mail.smtp.port", "587");
 javaMailProperties.setProperty("mail.smtp.host", "smtp.office365.com");
 javaMailProperties.setProperty("mail.smtp.auth", "true");      
 javaMailProperties.setProperty("mail.smtp.starttls.enable", "true");  
  
 mailSender.setJavaMailProperties(javaMailProperties);  
     MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setFrom("****", "시스템");
        helper.setTo("test@test.com"); 
        helper.setSubject("test");
        helper.setText("test...", false);
        mailSender.send(message);
    }

}

이때 주의 할 것은 로그인 계정과 보내는 메일의 주소가 다른 경우 오류가 발생하게 된다.
com.sun.mail.smtp.SMTPSendFailedException: 554 5.2.0 STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied; Failed to process message due to a permanent exception with message Cannot submit message.

참고자료

댓글 없음:

댓글 쓰기