2010-03-30 16 views
16

He generado un código HTML (con las etiquetas <html><body></body></html>) como una cadena. Ahora quiero enviar este código HTML como HTML al correo. Mi código es el siguiente.Enviar correo HTML con la intención de Android

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("text/html"); 
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
intent.putExtra(Intent.EXTRA_SUBJECT, "I would like to buy the following"); 
intent.putExtra(Intent.EXTRA_TEXT, purchaseOrder()); 
startActivity(Intent.createChooser(intent, "sending mail")); 

Cuando el purchaseOrder() es el método que me pasa la cadena de tener el código HTML completo. Pero aunque el cliente de GMail se abre en mi Nexus1, tiene la cadena con todas las etiquetas HTML y no la vista HTML real. Intenté lo siguiente pero obtuve el error. El GMail se estrelló.

intent.putExtra(Intent.EXTRA_STREAM, purchaseOrder()); 
+4

Puesto que no se puede dar formato electrónico en la aplicación integrada de correo, este puede no ser posible con el método Intent. –

+0

posible duplicado de [Cómo enviar correo electrónico HTML] (http://stackoverflow.com/questions/2007540/how-to-send-html-email) –

Respuesta

4

Para una persona que quiere hacer esto, enviar el correo electrónico manualmente detrás de las escenas usando obras android-javamailer (lo he hecho):

http://www.jondev.net/articles/Sending_Emails_without_User_Intervention_%28no_Intents%29_in_Android

+3

Requiere que conozca el nombre de usuario y la contraseña de la cuenta de correo electrónico del usuario ... –

+1

Sí, pero puede usar su propio correo electrónico comercial y contraseña para evitar la necesidad de la información del usuario para enviar un correo electrónico – Eenvincible

+0

¿cómo es esto seguro? incluso si el código está ofuscado, aún puedo buscar cadenas en el código, así como dentro de strings.xml y encontrar el nombre de usuario y la contraseña. –

26

Esto funciona para mí:

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

Pero no tengo cuenta de que están siendo ignorados los estilos en línea y las etiquetas de imagen ...

+1

Esto funcionó para mí también, es un poco delicado, pero funcionó de Gmail de todos modos – mattlary

+0

Esto también me funcionó y debería ser la respuesta correcta a la pregunta. – zeh

+0

@Andy Cochrane: ¿Qué es el cuerpo? ¿es un archivo something.html o contiene? –

1

si no estoy mal lo que estaba buscando era

Html.fromHtml() 

por ejemplo,

Html.fromHtml("<a href="www.google.com"> Google</a>"); 

esto hará que Google un hipervínculo

+1

No en mi dispositivo ... –

1

Esto funcionó para mí y mi Intent.ACTION_SENDTO código va aquí:

String mailId="[email protected]"; 
    Intent emailIntent = new Intent(Intent.ACTION_SENDTO, 
            Uri.fromParts("mailto",mailId, null)); 
    emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject text here"); 
    // you can use simple text like this 
    // emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,"Body text here"); 
    // or get fancy with HTML like this 
    emailIntent.putExtra(
      Intent.EXTRA_TEXT, 
      Html.fromHtml(new StringBuilder() 
       .append("<p><b>Some Content</b></p>") 
      .append("<a>http://www.google.com</a>") 
      .append("<small><p>More content</p></small>") 
      .toString()) 
     ); 
    startActivity(Intent.createChooser(emailIntent, "Send email...")); 
Cuestiones relacionadas