【问题标题】:Send HTML email with Gmail 6.11.6 using intent使用 Intent 使用 Gmail 6.11.6 发送 HTML 电子邮件
【发布时间】:2017-04-28 16:19:19
【问题描述】:

我一直在使用 Intents 从我的应用程序中使用 Android 上的 Gmail 发送 HTML 格式的电子邮件。它工作正常,但现在即使在 Gmail 撰写显示中也不显示格式。 gmail应用程序中是否还有另一个错误??

注意:我已经解决了这些问题 bug in gmail 4.somethingbroken 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 仍然没有设置格式。 如果有人指出我正确的方向,那就太好了。

欢迎提出与一些替代方案相关的建议。

【问题讨论】:

  • 您找到解决方法了吗?在 Gmail v6.11.2 和 7.1.129 上使用任何常见的“通过意图发送 html 电子邮件”解决方案(包括您的代码)时,我都会遇到同样的问题。
  • 我认为 Gmail 已删除此功能。
  • 您是否检查过您是否在 Gmail 上以 HTML 格式而不是纯文本格式查看电子邮件?

标签: android html email android-intent gmail


【解决方案1】:

我不知道它是否可以帮助你,我一周前在一个 java web 应用程序中做了它。这是我的方法:

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 配置。在我的应用程序中,我使用了 spring,我使用了一个 bean,但是您应该使用这些属性填充 JavaMailSender

   org.springframework.mail.javamail.JavaMailSenderImpl
    host="smtp.gmail.com"
    port="587"
    username="yourGmail@gmail.com"
    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

如果最后一部分不清楚,我很抱歉,但它是一个 spring bean 配置。您应该在 java 中手动设置这些属性(mailSender.set...)。 我假设您在 gmail 帐户中配置了设置,因为如果没有正确的设置,它将无法正常工作,但是如果您说您已经发送了一些邮件,我认为您可以。如果你发现一些无用的代码,那是因为我很快修改了我的原始代码。

【讨论】:

  • 感谢您的回复,但该问题与 Android 和 Gmail 应用程序的迭代密切相关。
猜你喜欢
  • 2015-01-02
  • 2012-11-25
  • 1970-01-01
  • 2015-05-17
  • 2018-01-26
  • 2020-07-12
  • 2015-05-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多