Как включить изображения в электронную почту HTML в Android - PullRequest
2 голосов
/ 23 февраля 2012

Я пытаюсь отправить изображения, используя HTML, в своем теле письма, но изображения не отправляются.Я не знаю, что я сделал не так.Я попытался использовать код ниже:

Intent i = new Intent(Intent.ACTION_SEND_MULTIPLE);
i.setType("text/html");
String tempStr = "<html><head><title></title><style> b{ color: red}             </style></head><body><img src=\""+ "images/assaultoffences.png" + "\"><b>quick</b></body>   </html>";
i.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(tempStr));
i.putExtra(Intent.EXTRA_EMAIL, new String[] {"ashwini.soma@gmail.com"});
i.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
startActivity(i);

try {
    startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
    Toast.makeText(SavePage.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}

Ответы [ 4 ]

1 голос
/ 05 августа 2013

Это разочаровывающе не поддерживается в Android. Одним из обходных путей является использование Java Mail и выяснение этого самостоятельно. Я использовал библиотеку droidQuery , чтобы записать мой HTML в файл и прикрепить его к электронному письму:

final Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
String html = "<div>Place Your HTML here.</div>";
shareIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(html));
shareIntent.setType("text/html");
$.with(this).write(html, FileLocation.EXTERNAL, "email.html", false, false, new Function() {

    @Override
    public void invoke($ droidQuery, Object... params) {
        String file = ((File) params[1]).getAbsolutePath();
        shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + file));
        startActivity(shareIntent);
    }
}, new Function() {
    @Override
        public void invoke($ droidQuery, Object... params) {
            Log.e("$", (String) params[1]);
        }
});

Затем добавил этот блок вверху HTML <body> (также плохо отформатирован в электронной почте Android):

<div style="background: gray; color: black; align='center'" >
    Trouble viewing this email? Open the attachment to view in your web browser.
</div>

Если вы рассматриваете первый подход (Java Mail), я бы рекомендовал использовать расширение droidMail для droidQuery, которое использует библиотеку для предоставления упрощенного API.

0 голосов
/ 23 февраля 2012

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

Надеюсь, это поможет вам решить вашу проблему.

Спасибо.

0 голосов
/ 23 февраля 2012

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

Уже есть вопрос и ответ , описывающий, как прикреплять файлы к электронным письмам при их отправке.

Этот ответ показывает, как сделать ссылку на прикрепленное изображение из html, чтобы сделать ихпоказать в теле (это работает для Outlook по крайней мере).

0 голосов
/ 23 февраля 2012

Изображение должно быть где-то размещено.Когда пользователь получит электронное письмо, клиент будет искать изображение «images / assaultoffences.png», которого не будет.Разместите его где-нибудь, затем укажите полный URL-адрес в письме, например http://mydomain.com/images/assaultoffences.png

...