responder por persona otra mandar enviar electrónico desde correo como celular android email android-intent send

por - Android, ¿Cómo enviar correo electrónico HTML y forzar a Android a enviarlo a través de G-Mail y no a otras aplicaciones?



como mandar un correo electrónico a otra persona (4)

Para obtener solo aplicaciones de correo electrónico, use Intent.setType ("message / rfc822")

Quiero enviar un correo electrónico a través de mi aplicación. Necesito enviar un correo electrónico basado en HTML solo a través de G-Mail. Encontré las siguientes soluciones que cada uno de ellos tiene sus pros y sus contras.

1) Usar la intención (Intent.ACTION_SEND). Esta es una forma muy simple y puedo ver mi cuerpo en formato HTML, pero el problema es cuando hago clic en el botón "Enviar correo electrónico", por lo que aparecen muchas aplicaciones como Facebook y Google+ que son inútiles y no debería mostrarlas en esa lista. . Este es su código:

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

2) Usar la intención (Intent.ACTION_SENDTO). De esta manera filtra aplicaciones inútiles y me muestra solo clientes de correo. Pero no muestra mi correo electrónico en formato HTML en el cliente de gmail. Cuando envío el correo electrónico, algunos clientes muestran el cuerpo en formato HTML, mientras que otros no identifican HTML y mi enlace se comporta como texto sin formato. Este código es como:

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

3) Enviar correo usando la API de JavaMail, que agrega mucha complejidad a la aplicación y no la he probado hasta ahora.

¿Cuál es tu sugerencia? Necesito una forma de tener ventajas de primera y segunda vía. Necesito que cuando el usuario haga clic en el botón muestre el cliente de Gmail y pueda mostrarle su contenido html en la parte del cuerpo del cliente.

Cualquier sugerencia sería apreciada. Gracias

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

Actualizar

Algo sobre el código 2 está mal. El código es así:

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


Pruebe este código: seleccionará solo proveedores de correo electrónico, no facebook, etc.

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


Pruebe lo siguiente:

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

Esto solo presentará aplicaciones de correo electrónico.


Si solo desea que una aplicación controle su intención, debe eliminar Intent.createChooser (), en lugar de usar startActivity () ---> se envía el correo usando el cliente de correo electrónico predeterminado; si no está configurado, se le pedirá que lo haga. .. tat se puede cambiar en cualquier momento