Android, Как отправить HTML-адрес электронной почты и заставить Android отправлять его через G-Mail, а не в другие приложения? - программирование
Подтвердить что ты не робот

Android, Как отправить HTML-адрес электронной почты и заставить Android отправлять его через G-Mail, а не в другие приложения?

Я хочу отправить электронную почту через свое приложение. Мне нужно отправить электронную почту на основе HTML через G-Mail. Я нашел следующие решения, в каждом из которых есть плюсы и минусы.

1) Использование Intent (Intent.ACTION_SEND). Это очень простой способ, и я могу видеть свое тело в формате HTML, но проблема заключается в том, что я нажимаю кнопку "Отправить письмо", поэтому появляется много приложений, таких как Facebook и Google+, которые бесполезны, и я не должен показывать его в этом списке, Это его код:

String html = "<!DOCTYPE html><html><body><a href=\"http://www.w3schools.com\" target=\"_blank\">Visit W3Schools.com!</a>" + "<p>If you set the target attribute to \"_blank\", the link will open in a new browser window/tab.</p></body></html>";

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"MY EMAIL ADDRESS"});
intent.putExtra(Intent.EXTRA_SUBJECT, "subject here");
intent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(html));
startActivity(Intent.createChooser(intent, "Send email..."));

enter image description hereenter image description here

2) Использование Intent (Intent.ACTION_SENDTO). Таким образом, фильтрация бесполезных приложений и показывает мне только почтовые клиенты. Но он не отображает мою электронную почту в формате HTML в клиенте gmail. Когда я отправляю электронное сообщение, некоторые клиенты показывают тело в формате HTML, в то время как другие не идентифицируют HTML, а моя ссылка ведет себя как обычный текст. Этот код похож:

String html = "<!DOCTYPE html><html><body><a href=\"http://www.w3schools.com\" target=\"_blank\">Visit W3Schools.com!</a>" + "<p>If you set the target attribute to \"_blank\", the link will open in a new browser window/tab.</p></body></html>";
Intent send = new Intent(Intent.ACTION_SENDTO);
String uriText = "mailto:MY EMAIL ADDRESS" + "?subject=subject here" + "&body=" + html;
uriText = uriText.replace(" ", "%20");
Uri uri = Uri.parse(uriText);
send.setData(uri);
startActivity(Intent.createChooser(send, "Send mail..."));

enter image description hereenter image description here

3) Отправка почты с использованием API JavaMail, который добавляет столько сложностей в приложение, и я до сих пор не тестировал его.

Каково ваше предложение? Мне нужен способ иметь преимущества первого и второго способов. Мне нужно, когда пользователь нажимает кнопку, на котором отображается клиент Gmail, и я могу показать его html-контент в основной части клиента.

любое предложение будет оценено. Благодаря

======================

Обновление

Что-то в коде 2 неверно. Код выглядит так:

String html = "<!DOCTYPE html><html><body><a href=\"http://www.w3schools.com\" target=\"_blank\">Visit W3Schools.com!</a>" + "<p>If you set the target attribute to \"_blank\", the link will open in a new browser window/tab.</p></body></html>";
Intent send = new Intent(Intent.ACTION_SENDTO);
String uriText = "mailto:MY EMAIL ADDRESS" + "?subject=subject here" + "&body=" + Html.fromHtml(html);
uriText = uriText.replace(" ", "%20");
Uri uri = Uri.parse(uriText);
send.setData(uri);
startActivity(Intent.createChooser(send, "Send mail..."));

enter image description here

4b9b3361

Ответ 1

Попробуйте следующее:

Intent shareIntent = new Intent(Intent.ACTION_SENDTO,Uri.parse("mailto:"));
shareIntent.putExtra(Intent.EXTRA_TEXT,Html.fromHtml(body));
shareIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
startActivity(shareIntent);

Здесь будут представлены только приложения электронной почты.

Ответ 2

Если вы хотите, чтобы только одно приложение обрабатывало ваше намерение, вам нужно удалить Intent.createChooser(), скорее jst use startActivity() --- > он отправит почту, используя почтовый клиент по умолчанию, если не установлен, тогда будет запрашиваться сделайте это... tat можно изменить в любое время

Ответ 3

Попробуйте этот код: он будет выбирать только поставщиков электронной почты, а не facebook и т.д.

 String body="<!DOCTYPE html><html><body><a href=\"http://www.w3schools.com\" target=\"_blank\">Visit W3Schools.com!</a>" +
                      "<p>If you set the target attribute to \"_blank\", the link will open in a new browser window/tab.</p></body></html>";
            final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
            emailIntent.setType("text/html");           
            emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);    
            emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(body));
            startActivity(Intent.createChooser(emailIntent, "Email:"));

Ответ 4

Чтобы получать только приложения электронной почты, используйте Intent.setType( "сообщение/rfc822" )