2010-03-30 16 views
16

Wygenerowałem kod HTML (wraz z tagami <html><body></body></html>) jako ciąg. Teraz chcę wysłać ten kod HTML jako HTML do poczty. Mój kod jest jak poniżej.Wysyłaj wiadomości HTML przy użyciu intencji Androida

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

Jeżeli purchaseOrder() jest metoda, która przechodzi mi ciąg mający pełny kod HTML. Ale chociaż klient GMail otwiera się na moim Nexus1, ale ma ciąg z wszystkimi tagami HTML, a nie rzeczywistym widokiem HTML. Próbowałem następujące, ale dostałem błąd. GMail się zawiesił.

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

Ponieważ nie można formatować pocztę wbudowanej aplikacji pocztowej, to może nie być możliwe za pomocą metody Intent. –

+0

możliwy duplikat [Jak wysłać wiadomość HTML] (http://stackoverflow.com/questions/2007540/how-to-send-html-email) –

Odpowiedz

4

Dla ktoś chce to zrobić, wysyłając wiadomość e-mail ręcznie za kulisami przy użyciu prace android-javamailer (robiłem to):

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

+3

Wymaga to znajomości nazwy użytkownika i hasła do konta e-mail użytkownika ... –

+1

Tak, ale możesz użyć własnego firmowego adresu e-mail i hasła, aby uniknąć potrzeby wysyłania przez użytkownika wiadomości e-mailowej na adres – Eenvincible

+0

. W jaki sposób jest to bezpieczne? nawet jeśli kod jest zaciemniany, nadal mogę wyszukiwać ciągi znaków w kodzie, a także wewnątrz stringów.xml i znajdować nazwę użytkownika i hasło. –

26

Działa to dla mnie:

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

ale muszę zauważyć, że style inline i znaczniki obrazu są ignorowane ...

+1

To działało również dla mnie, jest nieco drażliwe, ale i tak działało z Gmaila. – mattlary

+0

To również działało dla mnie i powinno być poprawną odpowiedzią na to pytanie. – zeh

+0

@Andy Cochrane: Co to jest ciało? to jest plik something.html lub jego plik ??? –

1

jeśli się nie mylę, czego szukaliśmy był

Html.fromHtml() 

np

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

uczyni Google jako hiperłącze

+1

Nie na moim urządzeniu ... –

1

ten pracował dla mnie Intent.ACTION_SENDTO i mój kod idzie tutaj:

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...")); 
Powiązane problemy