电子邮件发件人Kotlin

iqjalb3h  于 2022-12-04  发布在  Kotlin
关注(0)|答案(2)|浏览(421)

我是编程新手。尝试使用此代码段打开Gmail。但问题是putExtra(Intent.EXTRA_EMAIL,strTo)没有给予任何结果。putExtra(Intent.EXTRA_SUBJECT,strSubject)工作正常。我也尝试传递数组,但结果相同。有人可以使用Kotlin为该电子邮件发件人提供建议吗?

val etTo = findViewById<EditText>(R.id.etTo)
val etSubject = findViewById<EditText>(R.id.etSubject)

val emailBtn = findViewById<Button>(R.id.emailBtn)

emailBtn.setOnClickListener {

    val strTo = etTo.text.toString()
    val strSubject = etSubject.text.toString()
    

    val intent = Intent(Intent.ACTION_SENDTO).apply {
        data = Uri.parse("mailto")
        putExtra(Intent.EXTRA_EMAIL, strTo)
        putExtra(Intent.EXTRA_SUBJECT, strSubject)
        startActivity(intent,)

   
    composeEmail("$strTo", "$strSubject")

}

}

fun composeEmail(addresses: String, subject: String) {
      val intent = Intent(Intent.ACTION_SENDTO).apply {

          data = Uri.parse("mailto:")
          putExtra(Intent.EXTRA_EMAIL, addresses)
          putExtra(Intent.EXTRA_SUBJECT, subject)
      }
      if (intent.resolveActivity(packageManager) != null) {
          startActivity(intent)
      }
  }

我尝试使用数组。
有趣的撰写电子邮件(地址:数组,主题:字符串)

rt4zxlrg

rt4zxlrg1#

val intent = Intent(Intent.ACTION_SEND).apply {
    type = "message/rfc822"
    putExtra(Intent.EXTRA_EMAIL, arrayOf(strTo))
    putExtra(Intent.EXTRA_SUBJECT, strSubject)
}
startActivity(intent)

您需要使用type属性来指定要发送的数据类型,并且需要以字符串数组的形式传递收件人的电子邮件地址。请记住,使用此方法只会打开用户的默认电子邮件应用程序,并预先填写收件人的电子邮件地址和主题。用户仍需要手动编写和发送电子邮件。

ddrv8njm

ddrv8njm2#

看起来你试图传递给putExtra(Intent.EXTRA_EMAIL, strTo)的是一个字符串而不是一个字符串数组。Intent.EXTRA_EMAIL常量用于传递一个电子邮件地址数组给一个电子邮件应用,所以你需要传递一个字符串数组,格式为“name@email.com“。
下面是一个如何修改代码以使用字符串数组的示例:

val emailBtn = findViewById<Button>(R.id.emailBtn)

emailBtn.setOnClickListener {

    val strTo = etTo.text.toString()
    val strSubject = etSubject.text.toString()

    // Create an array of strings with the email address entered in the etTo EditText
    val emailAddresses = arrayOf(strTo)

    // Use the array of email addresses to pass to putExtra()
    val intent = Intent(Intent.ACTION_SENDTO).apply {
        data = Uri.parse("mailto")
        putExtra(Intent.EXTRA_EMAIL, emailAddresses)
        putExtra(Intent.EXTRA_SUBJECT, strSubject)
        startActivity(intent,)
    }
    composeEmail(emailAddresses, "$strSubject")
}

相关问题