ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Android - Gmail API를 이용한 메일전송 예제
    Programming/Android 2016. 2. 11. 23:18
    반응형


    개발환경

      Android Studio 1.5.1

      JDK1.7.0_80

      


    Gmail API연동방법 안내페이지 : https://developers.google.com/gmail/api/quickstart/android


    이 예제는 구글 개발자사이트에 소개된 Gmail API Android연동방법예제를 약간 수정하는 내용입니다.

    기존 예제는 Gmail Label읽어오는 내용이며

    제가 수정하는 것은 Label읽어오는 대신 mail을 전송하는 내용으로 바꾼것입니다.


    그래서 먼저 원래 예제 작동되는 것까지 성공하신 후에 아래 내용대로 진행하시기 바랍니다!



    1. 관련라이브러리 추가

      https://code.google.com/archive/p/javamail-android/downloads

      에서 additional.jar, mail.jar, activation.jar 파일 다운로드 후 프로젝트/app/libs폴더에 추가

      

      JavaMail API 안드로이드버전입니다. 그냥 JavaMail을 적용해보니 중간에 자꾸 멈춰서 해당 라이브러리로 변경했습니다.

      메일전송시 사용되는 MIME형식으로 데이터를 변환할때 해당 라이브러리를 사용합니다.

      




    2. 권한 변경

       기존소스는 메일박스 레이블관리 권한(GMAIL_LABELS)으로 설정되어 있습니다. 메일전송권한을 추가하거나 변경합니다.

          

       기존 : private static final String[] SCOPES = { GmailScopes.GMAIL_LABELS };

       변경 : private static final String[] SCOPES = { "https://www.googleapis.com/auth/gmail.send" };




    3. 메일전송 기능 추가


    소스 MakeRequestTask 클래스 멤버함수에 아래 소스를 추가합니다.

      

        private Message MimeMessage2Message(MimeMessage msg) throws MessagingException, IOException
        {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            msg.writeTo(baos);
            String encodedEmail = Base64.encodeBase64URLSafeString(baos.toByteArray());
            Message message = new Message();
            message.setRaw(encodedEmail);
            return message;
        }
    
        private void sendMail() throws IOException
        {
            Properties props = System.getProperties();
            Session session = Session.getDefaultInstance(props, null);
            MimeMessage mimeMessage = new MimeMessage(session);
            Message msg = null;
            try{
                mimeMessage.addRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress("받는사람이메일"));
                mimeMessage.setSubject("mail 제목");
                mimeMessage.setText("mail 내용");
                msg = MimeMessage2Message(mimeMessage);
            }
            catch (Exception e){
                return;
            }
            mService.users().messages().send("me", msg ).execute();
        }
    

    그리고 doInBackground 함수에서 sendMail을 호출하도록 수정합니다.


    이렇게 하면 지정한 수신자로 메일이 전달됩니다.

       


    샘플소스 : https://github.com/smok95/GmailAPISendSample



    반응형
Designed by Tistory.