在Android中发送PDF作为电子邮件附件



我在发送电子邮件附件时有问题。

首先:我使用iText5将一些文本戳成PDF。PDF文件保存在我的assets文件夹中:

AssetManager am = getAssets();
InputStream fs;
FileOutputStream fOut  ;
try
{
    fs = am.open("RFA2_10_11.pdf");
    PdfReader pdfReader = new PdfReader(fs);
    Log.d("pdfreader", pdfReader.getFileLength()+"   kello");
    fOut = openFileOutput("DocStamped.pdf",
    MODE_WORLD_READABLE);
    PdfStamper stamper = new PdfStamper(pdfReader, fOut);
    PdfContentByte canvas = stamper.getOverContent(1);
    ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, new Phrase("Stefano Molle"), 250, 710, 0);
    ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, new Phrase("4 Saint Pappins Road, Glasnevin, Dublin 11"), 250, 645, 0);
    stamper.close();
}
catch (IOException e) 
{
    // TODO Auto-generated catch block
    e.printStackTrace();
}
catch (DocumentException e) 
{
    // TODO Auto-generated catch block
    e.printStackTrace();
}

创建的PDF文件存储在我的应用程序的根文件目录中。

我需要将保存的DocStamped.pdf文件作为附件发送到电子邮件中:

String emailTo = "example@example.com";
//lets send the email
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("text/plain");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{emailTo});            
ArrayList<Uri> uris = new ArrayList<Uri>();
File file = new File(getFilesDir()+"/"+"DocStamped.pdf");
Log.d("file", file.getAbsolutePath());
Uri uri =  Uri.fromFile(file);
uris.add(uri);
emailIntent.putExtra(Intent.EXTRA_STREAM, uri);
// emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
startActivity(Intent.createChooser(emailIntent, "Send mail..."));

现在这是我发送邮件的代码。但是我遇到了麻烦。应用程序上显示有附件,但当我在浏览器中查看我的电子邮件帐户时,没有附件,只有我输入的文本。

有人知道为什么附件没有发送吗?

你的代码为我工作,与几个修改:

  • 我使用getFilesDir() (/data/data/[app name]/files)来检索pdf而不是资产
    • 代替ArrayList<Uri>,我使用一个单一的Uri,像这样:

Uri URI = Uri.parse("file://" + file.getAbsolutePath()); emailIntent.putExtra(Intent.EXTRA_STREAM, URI);

如果您使用的是gmail客户端,附件路径必须以mnt/sdcard开头

相关内容

  • 没有找到相关文章

最新更新