Отправка PDF в виде вложения электронной почты в Android - PullRequest
3 голосов
/ 30 ноября 2011

У меня проблемы с отправкой вложения по электронной почте.

Во-первых: я использую iText5 для печати текста в PDF. PDF хранится в моей папке с активами:

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..."));

Теперь это мой код для отправки электронного письма. но у меня проблемы. В приложении написано, что вложение есть, но когда я проверяю свою учетную запись электронной почты в браузере, вложения нет, только текст, в который я пишу.

Есть идеи, ребята, почему вложение не отправляется?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2015

Ваш код работает для меня, с парой модификаций:

  • Я использую getFilesDir () (/ data / data / [имя приложения] / files) для получения pdf вместо ресурсов
    • Insted of ArrayList<Uri> Я использую один Uri, например:

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

0 голосов
/ 30 ноября 2011

если вы используете клиент Gmail, путь вложения должен начинаться с mnt/sdcard.

...