質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

5882閲覧

Androidアプリでメール送信が上手くいかない

Haruto513

総合スコア52

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

1クリップ

投稿2020/06/17 02:31

編集2020/06/17 04:21

現在、Androidアプリで作成した文章データを、Excelファイルにしてメールに添付し、
送信する機能を実装したいと考えています。
その機能のメール送信の部分で、以下の二つのWEBページを参考に処理を書いてみたのですが、上手くいきません。

参考サイト:
https://www.techscore.com/tech/Java/JavaEE/JavaMail/index/
http://nosix.hatenablog.com/entry/2018/11/12/153359

Kotlin

1 2bt_soshin.setOnClickListener { 3 4 Thread { 5 val properties = Properties() 6 properties.put("mail.smtp.host", "smtp.gmail.com") 7 properties.put("mail.smtp.socketFactory.port", "465") 8 properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory") 9 properties.put("mail.smtp.auth", "true") 10 properties.put("mail.smtp.port", "465") 11 val session = Session.getDefaultInstance(properties) 12 val mimeMessage = MimeMessage(session) 13 14 try { 15 mimeMessage.setRecipients(Message.RecipientType.TO, "xxxx@gmail.com") 16 mimeMessage.setFrom(InternetAddress("yyyy@gmail.com")) 17 mimeMessage.setSubject("テスト", "iso-2022-jp") 18 mimeMessage.setText(et_soshin_comment.text.toString(), "iso-2022-jp") 19 mimeMessage.saveChanges() 20 Transport.send(mimeMessage) 21 } catch (e: MessagingException) { 22 Log.e("MessageException!!", e.toString()) 23 } 24 }.start() 25 26 finish() 27} 28 29

エラー文は以下のようになっていました。

E/MessageException!!: javax.mail.AuthenticationFailedException: failed to connect, no password specified?

恐らく、送信側のグーグルアカウントのパスワードが必要なのだと思いますが、
パスワードを指定するにはどのように記述すればいいのでしょうか。
また、送信側の端末メールアドレスやパスワードは、Kotlinのコード内で取得できるのでしょうか。
できるのでしたら、そちらの方法もご教示頂けると幸いです。
宜しくお願い致します。

試してみたこと

https://medium.com/@himanshu017/using-javamail-api-in-android-with-kotlin-887410406566
上記のWebページを参考にして、下記のようなコードを書きました。

Kotlin

1 2bt_soshin.setOnClickListener { 3 4 Thread { 5 val properties = Properties() 6 properties.put("mail.smtp.host", "smtp.gmail.com") 7 properties.put("mail.smtp.socketFactory.port", "465") 8 properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory") 9 properties.put("mail.smtp.auth", "true") 10 properties.put("mail.smtp.port", "465") 11 val session = Session.getDefaultInstance(properties, 12 object : Authenticator() { 13 override fun getPasswordAuthentication(): PasswordAuthentication { 14 return PasswordAuthentication("my account name", "password") 15 } 16 } 17 ) 18 val mimeMessage = MimeMessage(session) 19 20 try { 21 mimeMessage.setRecipients(Message.RecipientType.TO, "xxxx@gmail.com") 22 mimeMessage.setFrom(InternetAddress("yyyy@gmail.com")) 23 mimeMessage.setSubject("テスト", "iso-2022-jp") 24 mimeMessage.setText(et_soshin_comment.text.toString(), "iso-2022-jp") 25 mimeMessage.saveChanges() 26 Transport.send(mimeMessage) 27 } catch (e: MessagingException) { 28 Log.e("MessageException!!", e.toString()) 29 } 30 }.start() 31 32 finish() 33} 34 35 36

このコードで実行してみたら、エラー文が以下のように変わりました。

D/NetworkSecurityConfig: No Network Security Config specified, using platform default E/MessageException!!: javax.mail.AuthenticationFailedException: 535-5.7.8 Username and Password not accepted. Learn more at 535 5.7.8 https://support.google.com/mail/?p=BadCredentials q13sm19381323pfk.8 - gsmtp

リンク先の記事を読んで、パスワードが正しいことを確認し、設定したグーグルアカウントの「安全性の低いアプリのアクセスの設定」を有効にしてまた再実行してみましたが、エラーは変わりませんでした。

ここから、どうすればアプリからメールを送信できるようになるでしょうか。
アドバイスを頂けると助かります。宜しくお願い致します。

開発環境
Windows 10
Android Studio 4.0
テスト機器のAndroidバージョン 9

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

今ふと気づいて
PasswordAuthentication("my account name", "password")
の箇所を、
PasswordAuthentication("yyyy@gmail.com", "password")
に直したらメールの送信に成功しまいた。

なので、取り合えずこの質問は解決済みとさせて頂きます。

投稿2020/06/17 04:25

Haruto513

総合スコア52

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問