提问人:SAIR 提问时间:12/13/2016 最后编辑:AnonymousSAIR 更新时间:6/18/2022 访问量:1139
使用 intent 通过 Gmail 6.11.6 发送 HTML 电子邮件
Send HTML email with Gmail 6.11.6 using intent
问:
我一直在使用 intent 在我的应用中使用 Android 上的 Gmail 发送 HTML 格式的电子邮件。它工作正常,但现在即使在 Gmail 撰写显示中也不显示格式。Gmail应用程序中是否又出现了另一个错误还是什么?
注意:我已经在gmail 4.something中解决了这些问题,并且破坏了gmail意图
我的代码如下所示
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赞
Fausto
10/26/2017
#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="[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
很抱歉,如果最后一部分不清楚,但它是 spring bean 配置。您应该在 Java 中手动设置这些属性 (mailSender.set...)。 我假设您在 gmail 帐户中配置了设置,因为如果没有正确的设置,它将无法正常工作,但如果您说您已经发送了一些邮件,我认为您可以接受。如果你发现一些无用的代码,那是因为我快速修改了我的原始代码。
评论
0赞
SAIR
10/27/2017
感谢您的回复,但该问题与Android和Gmail应用程序的迭代密切相关。
评论