2016-12-13 1 views
8

Я использовал намерения для отправки в формате HTML с помощью Gmail на Android из своего приложения. он отлично работает, но теперь он не отображает форматирование даже в Gmail для отображения. Есть ли еще одна ошибка в приложении gmail или что?Отправить HTML-адрес электронной почты с помощью Gmail 6.11.6 с использованием намерения

Примечание: Я прошел через все эти вопросы Allready bug in gmail 4.something и broken gmail intents

Мой код выглядит следующим образом

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

примечание 2: он работал отлично ранее так что есть замечая неправильно с html.

Мой Html выглядит следующим образом

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

Я также пробовал очень простую версию HTML, которая приводится ниже

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

но Gmail по-прежнему не устанавливает форматирование. Будет здорово, если кто-то укажет мне в правильном направлении.

Предложения, связанные с некоторыми альтернативами, будут приветствоваться.

+0

Вы нашли исправление для этого? У меня такая же проблема, с использованием любого из распространенных решений «отправить html email через намерение», включая ваш код, в Gmail v6.11.2 и 7.1.129. – rustyWhitefeather

+1

Я думаю, что Gmail удалили эту функциональность. – SAIR

+0

Вы проверяете, просматриваете ли вы электронную почту как HTML, а не как обычный текст в Gmail? –

ответ

0

Я не знаю, может ли это вам помочь, я сделал это в веб-приложении Java всего неделю назад. Вот мой метод:

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

, а затем я использую этот метод, чтобы загрузить шаблон:

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

запомнить, чтобы настроить конфигурацию SMTP. в моем приложении я весной, когда я использую боб, но вы должны заполнить JavaMailSender с этими свойствами

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 

Я извиняюсь, если эта последняя часть не ясна, но это конфигурация пружины боб. вы должны установить эти свойства в java вручную (mailSender.set ...). Предполагаю, что вы настроили настройки в своей учетной записи gmail, потому что без правильных настроек это не сработает, но я думаю, что все в порядке, если вы говорите, что уже отправили некоторые письма. Если вы обнаружите какой-то бесполезный код, это быстро, я быстро изменил свой исходный код.

+0

Спасибо за ваш ответ, но вопрос строго связан с Android и итерацией с приложением Gmail. – SAIR