从阵列向多个收件人发送电子邮件



我存储在我的数据库中的电子邮件中,我查询我的数据库以返回包含所有电子邮件的列表。然后在我的活动中,我将它们全部发送到字符串数组(String[]),然后尝试将它们放在单个字符串中,以便将它们作为收件人,但最后只从字符串中获取我的最后一封电子邮件。

这是我的代码:

                DatabaseHandler db = new DatabaseHandler(
                    getApplicationContext());
            ArrayList<String> array_from_db = db.Get_Students_Email();
            String emails = "";
            for (int i = 0; i < array_from_db.size(); i++) {
                 emails = emails + array_from_db.get(i).toString() + ";";
            }
            db.close();
            Intent in = new Intent(Intent.ACTION_SEND);
            in.setType("message/rfc822");
            in.putExtra(Intent.EXTRA_EMAIL, new String[] { emails });
            in.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
            in.putExtra(Intent.EXTRA_TEXT, "body of email");
            try {
                startActivity(Intent.createChooser(in, "Send mail..."));
            } catch (android.content.ActivityNotFoundException ex) {
                Toast.makeText(Main_Setting.this,
                        "There are no email clients installed.",
                        Toast.LENGTH_SHORT).show();
            }

我也试过

in.putExtra(Intent.EXTRA_EMAIL, emails);

和 uri 解析,但仍然没有任何反应。

in.putExtra(Intent.EXTRA_EMAIL, new String[] { emails }); 

需要String电子邮件数组。现在,您只是将所有电子邮件连接成一个长String,然后从中构建一个长度的字符串数组,而不是实际构建一个电子邮件数组。

进行以下更改:

 String[] emails = new String[array_from_db.size()];
            for (int i = 0; i < array_from_db.size(); i++) {
                 emails[i] = array_from_db.get(i);
            }

然后只需使用:

in.putExtra(Intent.EXTRA_EMAIL, emails ); 

编辑:

或者,一种更简洁的处理方法是使用 ArrayList 方法:

   String[] emails = new String[array_from_db.size()];
   array_from_db.toArray(emails);
或者

你可以简单地做:

Intent i = new Intent(Intent.ACTION_SENDTO);
i.setType("message/rfc822");
String uriText = "mailto:" + email_concactenated_with_commas +
                 "?subject=" + your_subject + 
                 "&body=" + your_body
Uri uri = Uri.parse(uriText);
intent.setData(uri);
只需

在电子邮件字符串中用逗号分隔电子邮件地址,不要使用空格即可。 电子邮件应用程序将拾取多个地址,就像您用逗号分隔从计算机输入多个电子邮件地址的方式完全相同。

最新更新