我存储在我的数据库电子邮件中,我查询我的数据库以返回包含所有电子邮件的列表。然后在我的活动中,我将它们全部转换为String数组(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解析但仍然没有发生。
答案 0 :(得分:2)
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);
答案 1 :(得分:1)
或者您可以这样做:
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);
将电子邮件地址与逗号分开并且电子邮件字符串中没有空格也没关系。电子邮件应用程序将使用逗号分隔多个地址,就像从计算机输入多个电子邮件地址一样。