2016-12-13 19 views
8

Uygulamamdan Android'de Gmail kullanarak HTML formatlı e-posta göndermek için Intents kullanıyorum. İyi çalışıyordu, ancak artık Gmail'de görüntü biçimlendirmeyi göstermiyor. Yine gmail uygulamasında başka bir hata mı var?Gmail 6.11.6 ile HTML e-posta adresi kullanarak

Not: Ben bu sorulara aracılığıyla gitti allready bug in gmail 4.something ve broken gmail intents

Benim kod bu

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

not 2 benziyor: ince, daha önce var bu yüzden çalışıyordu html ile yanlış belirterek.

Benim Html bu

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

gibi ben de

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

aşağıda verilmiştir ama gmail hala biçimlendirme ayarlar gelmez html çok basit sürümünü denemiş görünüyor. Birisi beni doğru yöne yönlendirirse harika olur.

Bazı alternatiflerle ilgili öneriler memnuniyetle karşılanacaktır.

+0

Bunun için bir düzeltme buldunuz mu? Gmail v6.11.2 ve 7.1.129'da, kodunuz da dahil olmak üzere ortak "html e-postası göndererek" çözümlerinden birini kullanarak aynı sorunu yaşıyorum. – rustyWhitefeather

+1

Sanırım Gmail bu işlevi kaldırdı. – SAIR

+0

E-postayı Gmail'de Düz Metin olarak değil de HTML olarak görüntüleyip görüntülemediğinizi kontrol ettiniz mi? –

cevap

0

Size yardımcı olup olamayacağını bilmiyorum, sadece bir hafta önce bir java web uygulamasında yaptım. İşte benim yöntemdir:

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

ve sonra şablonu yüklemek için bu yöntemi kullanın:

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

sizin smtp yapılandırmasını yapılandırmayı unutmayın. Benim app Ben fasulye kullanmak yayı kullanılır ancak bu özelliklerin

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 

bu son kısmı net değil ama bir bahar fasulye yapılandırma buysa üzgünüm ile JavaMailSender doldurmak gerekir. Bu özellikleri java'ya elle ayarlamanız gerekir (mailSender.set ...). Size gmail hesabındaki ayarları yapılandırdığınızı varsayalım, çünkü uygun ayarlar olmadan çalışmaz, ancak sanırım bazı postaları göndermiş olursanız iyi olur. Kullanışlı olmayan bir kod bulursanız, orijinal kodumu hızla değiştirdim.

+0

cevabınız için teşekkürler, ancak soru kesinlikle Android ile ve Gmail App ile yineleme ile ilgilidir. – SAIR