現在、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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。