using the answer to this question you can get a list of all the apps with intent android.content.Intent.ACTION_SEND
here's a working example I coded below (ends up picking gmail on my device)
**Fair warning - will throw a NullPointerException if no email accounts have been setup
you should add a null check on the variable pkgAppsList
and tell the user no email applications found or have been setup
//set the main intent to ACTION_SEND for looking for applications that share information
Intent intent = new Intent(Intent.ACTION_SEND, null);
//intent.addCategory(Intent.CATEGORY_LAUNCHER); //if you want extra filters
//filter out apps that are able to send plain text
intent.setType("plain/text");
//get a list of apps that meet your criteria above
List<ResolveInfo> pkgAppsList = this.getPackageManager().queryIntentActivities( intent, PackageManager.MATCH_DEFAULT_ONLY | PackageManager.GET_RESOLVED_FILTER);
//select the first one in the list
ResolveInfo info = pkgAppsList.get(0);
String packageName = info.activityInfo.packageName;
String className = info.activityInfo.name;
//set the intent to luanch that specific app
intent.setClassName(packageName, className);
//some samples on adding more then one email address
String aEmailList[] = { "user@fakehost.com","user2@fakehost.com" };
String aEmailCCList[] = { "user3@fakehost.com","user4@fakehost.com"};
String aEmailBCCList[] = { "user5@fakehost.com" };
//all the extras that will be passed to the email app
intent.putExtra(android.content.Intent.EXTRA_EMAIL, aEmailList);
intent.putExtra(android.content.Intent.EXTRA_CC, aEmailCCList);
intent.putExtra(android.content.Intent.EXTRA_BCC, aEmailBCCList);
intent.putExtra(android.content.Intent.EXTRA_SUBJECT, "My subject");
intent.putExtra(android.content.Intent.EXTRA_TEXT, "My message body.");
//start the app
startActivity(intent);
if you want to whitelist what app is being called you can loop through the list checking each package name for a specific package (example: gmail is "com.google.android.gm")