2016-12-13 30 views
8

Używam aplikacji Intents do wysyłania wiadomości e-mail w formacie HTML przy użyciu Gmaila na Androida z mojej aplikacji. działało dobrze, ale teraz nie wyświetla formatowania nawet w widoku komponowania Gmaila. Czy jest jeszcze kolejny błąd w aplikacji Gmaila lub co?Wysyłanie wiadomości e-mail w formacie HTML za pomocą Gmaila 6.11.6 z użyciem intencji

Uwaga: I już przez te pytania allready bug in gmail 4.something i broken gmail intents

Mój kod wygląda następująco

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType(HTML_TEXT); 
String htmlContentInStringFormat = createHtmlforEmail(context, name, channelLink); 
if (htmlContentInStringFormat != null) { 
    intent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(htmlContentInStringFormat)); 
    } 
intent.putExtra(Intent.EXTRA_SUBJECT, name); 

UWAGA 2: to działa dobrze wcześniej więc nie ma zwracając uwagę na błędy w html.

My Html wygląda to

<div align="center"> 
<font size="5" color="#D0021B" face="Helvetica, Arial, sans-serif">CHARE</font> 
<p><font size="3" color="black" face="Helvetica, Arial, sans-serif">Dear Receiver,</font></p><p><font size="3" color="black" face="Helvetica, Arial, sans-serif">The sender of this email wants to invite you to this CHARE channel %1$s. Please click the subscribe button below to subscribe the channel.</font> </p> <p><a href=%2$s><font size="5" color="#5188de" face="Helvetica, Arial, sans-serif">Subscribe</font></a> </p> <p><font size="3" color="black" face="Helvetica, Arial, sans-serif">More information is available under</font></br><a href="www.chare.one"><font size="3" color="#5188de" face="Helvetica, Arial, sans-serif">www.chare.one</font></a></p></div> 

Próbowałem również bardzo prosta wersja HTML, który znajduje się poniżej

"Hello, here is some <b>bold text</b> some <u>underline text</u> and <a href=\"http://www.google.com\">a link</a>." 

gmail ale nadal nie ustawia formatowania. Będzie świetnie, jeśli ktoś wskaże mi właściwy kierunek.

Sugestie dotyczące pewnych alternatyw będą mile widziane.

+0

Czy znalazłeś poprawkę? Mam taki sam problem, używając któregoś z popularnych rozwiązań "wysyłaj html za pośrednictwem intencji", w tym kodu, w Gmailu w wersji 6.2.2 i 7.1.129. – rustyWhitefeather

+1

Wydaje mi się, że Gmail usunął tę funkcję. – SAIR

+0

Czy sprawdzasz, czy przeglądasz wiadomość e-mail jako HTML, a nie jako zwykły tekst w Gmailu? –

Odpowiedz

0

Nie wiem, czy to może pomóc, zrobiłem to w aplikacji internetowej java zaledwie tydzień temu. Oto moja metoda:

private JavaMailSender mailSender; 

public void sendEmail(final userDTO dto, String pathFile) { 
    MimeMessage message = mailSender.createMimeMessage(); 
    MimeMessageHelper helper; 
    try { 
     helper = new MimeMessageHelper(message); 
     helper.setTo(dto.getEmail()); 
     helper.setFrom(the_email_you_want_to_show); 
     helper.setText(loadTemplate(pathFile), true); 
    } catch (MessagingException e) { 
     e.printStackTrace(); 
    } 
    try{ 
     mailSender.send(message); 
    } catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

a potem użyć tej metody, aby załadować szablonu:

public String loadTemplate(String pathFile){ 
    Document doc = null; 
    DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); 
    domFactory.setNamespaceAware(true); 
    DocumentBuilder docBuilder = null; 
    StringBuilder sb = new StringBuilder(); 
    try { 
     docBuilder = domFactory.newDocumentBuilder(); 
     doc = docBuilder.parse(EmailSender.class.getResourceAsStream(pathFile), "UTF-8"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    try(StringWriter sw = new StringWriter()){ 
     Source xmlSource = new DOMSource(doc); 
     TransformerFactory.newInstance().newTransformer().transform(xmlSource, new StreamResult(sw)); 
     sb.append(sw.toString()); 
    } catch(Exception e){ 
     e.printStackTrace(); 
    } 
    return sb.toString().trim(); 
} 

pamiętać, aby skonfigurować swoją konfigurację SMTP. w mojej aplikacji użyłem sprężynę gdzie mogę użyć fasoli ale należy wypełnić JavaMailSender z tych właściwości

org.springframework.mail.javamail.JavaMailSenderImpl 
    host="smtp.gmail.com" 
    port="587" 
    username="[email protected]" 
    password="yourPassword" 
    javaMailProperties 
     props 
      prop key="mail.transport.protocol">smtp</prop> 
      prop key="mail.smtp.auth">true</prop> 
      prop key="mail.smtp.starttls.enable">true</prop> 
     props 

Przepraszam, jeśli ta ostatnia część nie jest jasne, ale jest to konfiguracja wiosna fasoli. powinieneś ręcznie ustawić te właściwości w java (mailSender.set ...). Zakładam, że skonfigurowałeś ustawienia na koncie Gmail, ponieważ bez odpowiednich ustawień to nie zadziała, ale myślę, że nic ci nie jest, jeśli powiesz, że już wysłałeś jakieś maile. Jeśli znajdziesz jakiś bezużyteczny kod, to szybko zmieniłem mój oryginalny kod.

+0

Dziękuję za odpowiedź, ale pytanie jest ściśle związane z Androidem i iteracją za pomocą aplikacji Gmail. – SAIR

Powiązane problemy