본문 바로가기
개발/안드로이드

Intent로 메일 보내기

by 장모 2020. 12. 3.

안드로이드에선 Intent를 사용해 다른 앱으로 데이터를 전달하며 앱을 실행한다. 구글에서 필수적인 Intent의 구조는 미리 정의를 해뒀는데, 메일 보내는 것도 그 중 하나이다. 

 

developer.android.com/reference/android/content/Intent

 

Intent  |  Android 개발자  |  Android Developers

 

developer.android.com

 

첨부파일 없이 메일을 보낼 땐 아래와 같이 보내면 된다. 메일 앱이 실행된다. 

val uri = Uri.parse("mailto:no-reply@mail.com")
val intent = Intent(Intent.ACTION_SENDTO, uri)
intent.putExtra(Intent.EXTRA_SUBJECT, "안녕하세요 메일 제목입니다")
intent.putExtra(Intent.EXTRA_TEXT, "안녕하세요, 메일 내용 입니다.")

 

파일을 첨부할 땐 위의 intent에 EXTRA_STREAM를 추가하면 될 것 같았는데 안된다.

 

파일을 첨부하려면 

Intent의 action을 ACTION_SEND로 변경하고 

메일 주소는 extra_email로 넘기는데 array여야 한다

파일 접근에 권한이 필요한 경우 읽기 권한을 부여하고 

extra_stream으로 첨부 파일의 URI를 넘긴다

 

val intent = Intent(Intent.ACTION_SEND)
intent.putExtra(Intent.EXTRA_SUBJECT, "메일 제목")
intent.putExtra(Intent.EXTRA_EMAIL, arrayOf("no-reply@mail.com"))
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.putExtra(Intent.EXTRA_STREAM, fileUri)

 

아무리 생각해도 ACTION_SENDTO에 파일 첨부가 안되는게 이상하다....

댓글