Intent를 사용한 첨부파일 이메일 보내기

by posted Apr 01, 2012
 
안드로이드의 Intent를 사용하면 다른 어플리케이션들의 기능을 빌려서 사용할 수 있습니다. 전화걸기라던가 이메일발송, 카메라와 갤러리 호출등이 바로 그런 것입니다.

이번에는 안드로이드의 Intnet를 사용하여 이메일 보내기와 이메일에 파일을 첨부하는 방법을 소개해 보고자 합니다.

 

이메일 발송하기

Intent를 사용하여 이메일을 보내는 방법에는 몇가지가 있습니다만, 그중에서 제가 개인적으로 테스트한 방법중에서는 다음의 방법이 가장 확장성이 좋았습니다.
우선 Intent.ACTION_SEND라는 Action값을 사용하여 Intent를 만듭니다. 그런 후에 이 Intent에 type과 Extra를 추가하면 됩니다.
추가해 줄 type값은 text이메일을 의미하는 "plain/text"입니다.

아래의 소스를 보면 tos라는 배열을 통해서 수신인의 메일 주소를 지정합니다. 수신인이 여러명일 경우 이 배열의 값을 증가시키면 동시에 여러명에서 메일을 발송할 수 있습니다.
수신인의 메일 주소는 Intent.EXTRA_EMAIL 이라는 이름으로 Extra를 추가합니다.
메일의 제목과 본문은 각각 Intent.EXTRA_SUBJECTIntent.EXTRA_TEXT라는 이름으로 추가합니다.
Intent it = new Intent(Intent.ACTION_SEND);
it.setType("plain/text");

// 수신인 주소 - tos배열의 값을 늘릴 경우 다수의 수신자에게 발송됨
String[] tos = { "hoya4232@naver.com" };
it.putExtra(Intent.EXTRA_EMAIL, tos);
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
it.putExtra(Intent.EXTRA_TEXT, "The email body text");
startActivity(it);


 

파일 첨부하기

파일을 첨부하기 위해서는 이메일을 발송하기 위한 Intent에 Intent.EXTRA_STREAM라는 이름으로 첨부할 파일의 URI값을 지정해 주면 됩니다.
// 파일첨부
it.putExtra(Intent.EXTRA_STREAM, fileUri);


 

전체 소스코드

테스트 예제에서는 화면에 버튼을 하나 놓고 버튼이 눌러졌을 때 파일을 첨부한 이메일을 발송하는 메일 클라이언트 프로그램을 구동하도록 되어 있습니다.
동일한 기능을 하는 프로그램이 여러개 설치되어 있을 경우, 안드로이드는 사용자에게 어떤 프로그램을 통해서 수행할 것인지를 묻기 때문입니다.
SD카드의 root 디렉토리에 test.jpg라는 이미지 파일을 배치해 두었습니다.
또한 SD카드의 경로를 얻기 위해서 Enviroment API를 사용하였으며, WRITE_EXTERNAL_STORAGE 퍼미션을 부여했습니다.
package kr.pe.hoyanet.sendfileex;

import java.io.File;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class SendFileExActivity extends Activity {

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		// 버튼 객체
		Button btEmail = (Button) findViewById(R.id.btEmail);

		// 전송할 파일의 경로
		String szSendFilePath = Environment.getExternalStorageDirectory()
				.getAbsolutePath() + "/test.jpg";
		File f = new File(szSendFilePath);
		if (!f.exists()) {
			Toast.makeText(this, "파일이 없습니다.", Toast.LENGTH_SHORT).show();
		}

		// File객체로부터 Uri값 생성
		final Uri fileUri = Uri.fromFile(f);

		/** 첨부파일 이메일 보내기 */
		btEmail.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent it = new Intent(Intent.ACTION_SEND);
				it.setType("plain/text");

				// 수신인 주소 - tos배열의 값을 늘릴 경우 다수의 수신자에게 발송됨
				String[] tos = { "hoya4232@naver.com" };
				it.putExtra(Intent.EXTRA_EMAIL, tos);

				it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
				it.putExtra(Intent.EXTRA_TEXT, "The email body text");

				// 파일첨부
				it.putExtra(Intent.EXTRA_STREAM, fileUri);

				startActivity(it);
			}
		});
	}
}
 
      c93068644aacba707e5875043d3e2d64.png

 



이 예제의 전체 소스코드는 다음의 링크를 클릭하시기 바랍니다.
SendFileEx.zip

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

SendFileEx.zip

[출처] http://itpaper.co.kr/?mid=android&document_srl=2232&listStyle=viewer

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
33 [안드로이드 Android] 시스템 인텐트(Intent)를 이용한 전화걸기, 문자보내기, 이메일보내기 etc file 졸리운_곰 2016.03.05 1099
» Intent를 사용한 첨부파일 이메일 보내기 file 졸리운_곰 2016.03.05 2117
31 android app gmail 보내기, 안드로이드 E-Mail 보내기 예제 따라하기 file 졸리운_곰 2016.03.05 267
30 android 실행시 class not found 졸리운_곰 2016.03.04 180
29 android 부팅과 함께 app 실행 시키기. 졸리운_곰 2016.03.02 168
28 [Android] 부팅시 서비스(Service) 재실행하기 (항상 실행) 졸리운_곰 2016.03.02 347
27 안드로이드 시스템 부팅시에도 프로그램 항상 실행 (재실행) 졸리운_곰 2016.03.02 705
26 App inventor 멀티스크린, 스크린 이동, 다중화면, file 졸리운_곰 2016.02.17 779
25 Communicating with Web APIs file 졸리운_곰 2016.02.17 1080
24 JSON data on the Android mobile with App Inventor 2 file 졸리운_곰 2016.02.17 364
23 REST clients for Java, MySQL and JSON Restful Web Services file 졸리운_곰 2016.01.11 223
22 안드로이드 개발 시 참고될 만한 자료 (android reading) 졸리운_곰 2015.11.11 4299
21 14 Great Android apps that are also open source file 졸리운_곰 2015.08.19 134
20 안드로이드 오픈소스 프로젝트 리스트 file 졸리운_곰 2015.08.19 432
19 ART(Android Runtime) file 졸리운_곰 2015.08.05 343
18 2014_CodeEngn_Conference_10_안드로이드에서도_한번_후킹을_해볼까_(Hooking_on_Android)_[정광운].pdf file 졸리운_곰 2015.06.16 248
17 안드로이드 커널 레벨 후킹하기 file 졸리운_곰 2015.06.16 1021
16 Android SDK 안드로이드 소스코드 난독화 file 졸리운_곰 2015.05.31 1254
15 안드로이드 프로그래밍 강좌 모음 졸리운_곰 2015.04.14 458
14 Nexus 기기 초기화 졸리운_곰 2015.04.10 295
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED