我存储在我的数据库中的电子邮件中,我查询我的数据库以返回包含所有电子邮件的列表。然后在我的活动中,我将它们全部发送到字符串数组(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);
只需在电子邮件字符串中用逗号分隔电子邮件地址,不要使用空格即可。 电子邮件应用程序将拾取多个地址,就像您用逗号分隔从计算机输入多个电子邮件地址的方式完全相同。