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


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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);
    }
 
}

이때 주의 할 것은 로그인 계정과 보내는 메일의 주소가 다른 경우 오류가 발생하게 된다.
1
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.

참고자료

댓글 없음:

댓글 쓰기