Saturday, April 30, 2016

[자바예제소스] 지메일 계정으로 메일/첨부파일 보내는법(Java 코드)

메일 보내는 자바 예제


작업을 하다가 자바나 혹은 웹에서
이메일을 보내는 예제가 필요해서
뭐 금방 찾겠지 하고 검색을 해봤습니다.
어? 그런데 생각처럼 간단하기만 한 건
아니었던 거 같습니다(물론 예제를 찾은
지금 기준으로는 간단한 예제이지만
어디까지나 알고 있는 지금 기준)
그냥 뭐 보내고 싶은 이메일 주소를
파라미터로 줘서 이메일 보내는 메서드
호출하면 되겠지 했는데 아니더라구요 ㅋ
일단 예제부터 공유하겠습니다




일단 위에 예제는 pdReport 카페에
올려 놓았으니 가셔서 다운 받으시면
됩니다. 그리고 먼저 말씀 드리는 건
위의 예제는 네이버에서 검색해서
찾은 예제입니다. 저는 그냥 갖다
사용만 한 겁니다. 거기에 추가적인
설명만 좀 더 할 뿐입니다.
출처를 찾아보려고 했는데 많은 분들이
위의 예제들을 사용하고 계셔서 어딘지를
알 수가 없습니다. 어쨌든 제가 직접 짠
코드는 아니고 인터넷에 막 돌아다니는
예제이고 그 중에 정상적으로 돌아가는
예제를 공유해 봅니다 ㅎㅎㅎ

다시 본론으로 돌아와서 위의 예제에
대해 간단하게 설명을 드리자면 지메일
계정을 사용해서 이메일을 보내는 예제인데
보내는 곳의 주소는 무조건 gmail이어야 되지만
받는 쪽의 이미엘은 지메일이 아니어도 됩니다.
저 같은 경우는 네이버 메일로 보냈습니다.

그러므로 위의 예제 중 본인의 지메일 계정과
패스워드를 입력해 주어야 됩니다.
제가 소스 상에 GMAIL_ID 라고 입력한 부분을
본인의 지메일 계정으로 바꿔 주셔야 되고,
소스의 제일 밑에 보시면 GMAIL_PASSWORD
​라는 부분이 있는데 그 부분에 해당 지메일 계정의
비밀번호를 입력해 주시면 됩니다.
아 그리고 받으시는 분의 이메일 주소도 입력해
주셔야 되는데 제가 공유한 소스 기준으로는
since201109@naver.com
​으로 받은 쪽의 이메일이 설정되어 있으니
이 것도 수정해 주셔야 됩니다.

p.put("mail.smtp.user", "GMAIL_ID@gmail.com");
Address fromAddr = new InternetAddress("GMAIL_ID@gmail.com");
Address toAddr = new InternetAddress("since201109@naver.com"); 
return PasswordAuthentication("GMAIL_ID@gmail.com", "GMAIL_PASSWORD");

위에 내용 수정해야 될 내용들입니다~
검색해서 찾으셔서 수정하세요ㅎㅎ

아 그리고 이 예제는 메일 보내는 것과 함께
첨부 파일도 함께 보내는 자바 예제입니다.
당연히 보내시려는 파일의 경로도 잡아
주셔야 겠지요. 아래 부분을 수정해
주시면 됩니다.

File file = new File("C:\aaa1.log");

저는 C 드라이브 밑에 있는 aaa1.log 라는
파일을 첨부해서 보냈습니다.
그리고 소스 상에서 메일의 제목과
메일의 내용도 설정이 가능합니다

메일 제목 설정
msg.setSubject("Gmail SMTP 서버를 이용한 JavaMail 테스트");

메일 내용  설정
messageBodyPart.setText("Java Mail API를 이용하여 첨부파일을 테스트합니다.");

메일은 받은 결과입니다~


권한설정


아... 근데 저도 이렇게 메일 보내는 자바 예제가
한 번에 바로 실행된 건 아닙니다.
분명 위에 제가 설명한 그대로 지메일 계정과
비밀번호까지 입력해주었는데도 메일이
전송이 되지 않았었습니다. 이클립스 콘솔에
찍힌 결과를 보니 권한이 어쩌고 저쩌고
하더라구요... 결론은 보안수준이 낮은 외부기기
(저의 이클립스 예제)에서 구글의 서비스를
사용하려고 하니 권한 문제가 발생한 거였습니다.

이 때 전 어떻게 해결을 했냐면 이클립스 콘솔에
나온 에러 메시지를 잘 찾아보시면
해결 방법이 나온 인터넷 주소가 하나 있습니다.
(캡처해놓은게 없어서 말로만 설명해요 ㅠㅠ)
구글에서 설명해주는 글인데 거기로 가시면
이클립스에서 메일 보내는 예제가 실행되도록
구굴의 특정 권한을 낮춰주는 방법에 대한
설명이 있습니다. 그 설정을 완료하면
아래와 같은 메일도 제 구글메일로 옵니다.


한 마디로 이제 제 구글 계정과
패스워드만 알면 제가 아닌 다른
사람이 제가 사용하지 않는 기기에서도
저처럼 제 메일의 계정으로 메일을
보낼 수가 있다는 겁니다.
즉 보안 수준이 낮아진 겁니다.
일단 저는 메일 보내는데 까지는
성공했으니 다시 위의 설정을
처음으로 되돌리려고 합니다.
애초에 이 예제를 찾은 이유가 있지만
보안 상 좋지 않아서 다른 방법을
찾아 보려고 합니다 ㅠㅠ

No comments:

Post a Comment