使用JavaMail API在Android Studio应用程序中发送电子邮件:服务器连接代码中的错误

使用JavaMail API在Android Studio应用程序中发送电子邮件:服务器连接代码中的错误,java,android,jakarta-mail,Java,Android,Jakarta Mail,我最近在一个应用程序中使用了上的第一个答案的代码。为了减少硬编码,我在Android Studio中为发件人电子邮件地址(和密码)制作了一个EditText小部件,并通过以下两行代码在OnClick函数中提取信息: et_email_from = (EditText) findViewById (R.id.et_email_from); final String user = et_email_from.getText().toString(); 问题是,一旦我单击按钮并调用sendMail函

我最近在一个应用程序中使用了上的第一个答案的代码。为了减少硬编码,我在Android Studio中为发件人电子邮件地址(和密码)制作了一个EditText小部件,并通过以下两行代码在OnClick函数中提取信息:

et_email_from = (EditText) findViewById (R.id.et_email_from);
final String user = et_email_from.getText().toString();

问题是,一旦我单击按钮并调用sendMail函数,我就不能再更改发件人地址了。我的意思是我可以,但应用程序仍然会从第一个发件人的电子邮件地址发送。有人能告诉我怎么解决这个问题吗?我认为这与代码中与服务器连接的位置有关,但我对Java编码还不熟悉,我不知道在哪里可以找到这段代码。

您需要将您的
字符串用户
设置为
非最终用户

代替
final String user=et_email_from.getText().toString()//不要用作最终版本

使用
String user=et_email_from.getText().toString()//像这样使用


然后,您将能够通过编程方式向不同的电子邮件(多个用户)发送电子邮件。

Hi@ruben troch,您的问题是您将变量设置为最终变量。检查下面我的答案,它将帮助您您复制的代码中充满了这些。试着纠正它们,看看是否效果更好。确保你使用的是官方的。此外,您不需要自己的ByteArrayDataSource。但是我得到了一个错误:变量是在内部类中访问的。需要被宣布为最终决定。我认为这是因为我使用了新AsyncTask()中的变量。我现在通过在AsyncTask中分配变量解决了这个问题。我不知道这是否是一个好的解决方案,但它现在起作用了。