【发布时间】:2019-05-28 03:13:49
【问题描述】:
我正在使用下面的代码发送电子邮件,但它要求提供 gmail 凭据。我正在寻找一个类似于 mailx 的命令,可以在不要求任何凭据的情况下将电子邮件发送到特定地址。任何帮助表示赞赏。
代码
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button: Button = findViewById(R.id.button)
val editTextTo: EditText = findViewById(R.id.editTextTo)
button.setOnClickListener(View.OnClickListener {
val to = editTextTo.getText().toString()
val subject = "Test"
val message = "Test"
val intent = Intent(Intent.ACTION_SEND)
val addressees = arrayOf(to)
intent.putExtra(Intent.EXTRA_EMAIL, addressees)
intent.putExtra(Intent.EXTRA_SUBJECT, subject)
intent.putExtra(Intent.EXTRA_TEXT, message)
intent.setType("message/rfc822")
startActivity(Intent.createChooser(intent, "Send Email using:"));
})
}
}
【问题讨论】:
-
这不会发送电子邮件,它会打开安装了预填充数据的默认电子邮件应用程序,并且用户是发送电子邮件的人。
-
它要求提供 Gmail 凭据,因为可能在没有配置帐户的情况下安装了 Gmail 应用程序,请尝试设置凭据并报告行为。
-
有什么方法可以在没有 gmail 应用(如 unix 命令中的 mailx)的情况下发送电子邮件
-
您可以使用JavaMail,但您将无法模拟用户,您需要使用自己的 SMPT 服务器
-
mailx 无法直接发送到 Gmail。如果 mailx 发送到您的本地邮件服务器,它只在没有密码的情况下工作,因为您在您的私人 Intranet 上,所以它信任您。如果公共互联网上有一个邮件服务器允许人们在没有密码的情况下发送电子邮件,你能想象垃圾邮件发送者会如何滥用它吗?在您的应用程序中包含您的 Gmail 帐户密码是有风险的,因为有人可能会发现它并滥用您的帐户。
标签: android android-studio email kotlin jakarta-mail