如何发送带有 android 意图的附件的电子邮件?
How can I send an email with an attached file with android's intent?
我正在尝试发送带有附件的电子邮件。内部存储中的文件,所以这是我的代码:
File filelocation = new File(getFilesDir().getAbsolutePath()+"/MyApp", "FileName");
Uri path = Uri.fromFile(filelocation);
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent .setType("vnd.android.cursor.dir/email");
String to[] = {"mailmailmail@gmail.com"};
emailIntent .putExtra(Intent.EXTRA_EMAIL, to);
emailIntent .putExtra(Intent.EXTRA_STREAM, path);
emailIntent .putExtra(Intent.EXTRA_SUBJECT, "Subject");
startActivity(Intent.createChooser(emailIntent , "Send email..."));
但我总是得到:Permission denied for file
。
我该如何解决??
-确保您已在清单中添加读取权限
使用权限android:name="android.permission.READ_EXTERNAL_STORAGE".
-GMail 5.0 只接受来自外部存储的文件
Gmail 5.0 app fails with "Permission denied for the attachment" when it receives ACTION_SEND intent.
你也可以使用这个库:compile'com.github.yesidlazaro:GmailBackground:1.1'.
String imagePath = data.getStringExtra(GOTOConstants.IntentExtras.IMAGE_PATH);
BackgroundMail.newBuilder(ReportBugActivity.this)
.withUsername("some_email@gmail.com")
.withPassword("pages123")
.withMailto("mail_to_email.bugs@gmail.com")
.withSubject("Android Bug Report")
.withAttachments(imagePath)
.withBody("Android Bug Report")
.withOnSuccessCallback(new BackgroundMail.OnSuccessCallback() {
@Override
public void onSuccess() {
Toast.makeText(getApplicationContext(), "Email Sent", Toast.LENGTH_LONG).show();
finish();
startActivity(getIntent());
}
})
.withOnFailCallback(new BackgroundMail.OnFailCallback() {
@Override
public void onFail() {
Toast.makeText(getApplicationContext(), "Failed", Toast.LENGTH_LONG).show();
}
}).send();
我是这样解决的:我把要发送的文件复制到外部缓存目录,然后发送。
File temporaryFile = null;
try {
temporaryFile = File.createTempFile(keyType.getKeyTypeString(), ".pem", context.getExternalCacheDir() );
Utils.copy(new File(getFilesDir().getAbsolutePath()+"/"+ Utils.APP_OPERATOR_DIR, keyType.getKeyTypeString()+".pem"), temporaryFile);
} catch (IOException e) {
e.printStackTrace();
}
File filelocation = new File(getFilesDir().getAbsolutePath()+"/MyApp", "FileName");
Uri path = Uri.fromFile(filelocation);
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent .setType("vnd.android.cursor.dir/email");
String to[] = {"mailmailmail@gmail.com"};
emailIntent .putExtra(Intent.EXTRA_EMAIL, to);
emailIntent .putExtra(Intent.EXTRA_STREAM, path);
emailIntent .putExtra(Intent.EXTRA_SUBJECT, "Subject");
startActivity(Intent.createChooser(emailIntent , "Send email..."));
我正在尝试发送带有附件的电子邮件。内部存储中的文件,所以这是我的代码:
File filelocation = new File(getFilesDir().getAbsolutePath()+"/MyApp", "FileName");
Uri path = Uri.fromFile(filelocation);
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent .setType("vnd.android.cursor.dir/email");
String to[] = {"mailmailmail@gmail.com"};
emailIntent .putExtra(Intent.EXTRA_EMAIL, to);
emailIntent .putExtra(Intent.EXTRA_STREAM, path);
emailIntent .putExtra(Intent.EXTRA_SUBJECT, "Subject");
startActivity(Intent.createChooser(emailIntent , "Send email..."));
但我总是得到:Permission denied for file
。
我该如何解决??
-确保您已在清单中添加读取权限
使用权限android:name="android.permission.READ_EXTERNAL_STORAGE".
-GMail 5.0 只接受来自外部存储的文件 Gmail 5.0 app fails with "Permission denied for the attachment" when it receives ACTION_SEND intent.
你也可以使用这个库:compile'com.github.yesidlazaro:GmailBackground:1.1'.
String imagePath = data.getStringExtra(GOTOConstants.IntentExtras.IMAGE_PATH);
BackgroundMail.newBuilder(ReportBugActivity.this)
.withUsername("some_email@gmail.com")
.withPassword("pages123")
.withMailto("mail_to_email.bugs@gmail.com")
.withSubject("Android Bug Report")
.withAttachments(imagePath)
.withBody("Android Bug Report")
.withOnSuccessCallback(new BackgroundMail.OnSuccessCallback() {
@Override
public void onSuccess() {
Toast.makeText(getApplicationContext(), "Email Sent", Toast.LENGTH_LONG).show();
finish();
startActivity(getIntent());
}
})
.withOnFailCallback(new BackgroundMail.OnFailCallback() {
@Override
public void onFail() {
Toast.makeText(getApplicationContext(), "Failed", Toast.LENGTH_LONG).show();
}
}).send();
我是这样解决的:我把要发送的文件复制到外部缓存目录,然后发送。
File temporaryFile = null;
try {
temporaryFile = File.createTempFile(keyType.getKeyTypeString(), ".pem", context.getExternalCacheDir() );
Utils.copy(new File(getFilesDir().getAbsolutePath()+"/"+ Utils.APP_OPERATOR_DIR, keyType.getKeyTypeString()+".pem"), temporaryFile);
} catch (IOException e) {
e.printStackTrace();
}
File filelocation = new File(getFilesDir().getAbsolutePath()+"/MyApp", "FileName");
Uri path = Uri.fromFile(filelocation);
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent .setType("vnd.android.cursor.dir/email");
String to[] = {"mailmailmail@gmail.com"};
emailIntent .putExtra(Intent.EXTRA_EMAIL, to);
emailIntent .putExtra(Intent.EXTRA_STREAM, path);
emailIntent .putExtra(Intent.EXTRA_SUBJECT, "Subject");
startActivity(Intent.createChooser(emailIntent , "Send email..."));