【问题标题】:making newsletter(HTML) with SpringFramework3使用 SpringFramework3 制作时事通讯(HTML)
【发布时间】:2014-11-25 15:16:09
【问题描述】:

我正在使用 Springframework 3 发送如下所示的时事通讯。

private void sendMail(Map<String,Object> mailInfo) throws Exception{
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
    mailSender.setHost("smtp.myhost.com");
    mailSender.setPort(587);
    mailSender.setUsername("email@email.com");
    mailSender.setPassword("12345");

    MimeMessage msg = mailSender.createMimeMessage();
    MimeMessageHelper mHelper = new MimeMessageHelper(msg, true, "UTF-8");

    mHelper.setFrom(new InternetAddress(
            mailInfo.get("send_mail").toString(), mailInfo.get("send_name").toString()));
    mHelper.setTo(new InternetAddress(
            mailInfo.get("recv_mail").toString(), mailInfo.get("recv_name").toString()));

    mHelper.setText(mailInfo.get("mail_desc").toString(), true);
    mHelper.setSubject(mailInfo.get("mail_title").toString());

    mailSender.send(msg);
}   

在我的情况下,mail_desc 的值是一个 HTML(它有 css 和其他资源)。邮件运行良好,但它的 CSS 和所有图像都损坏了。

我在 JSP 中附加到所有 src 值,如下所示

function getDomain(){
    var DNS = location.href;
    DNS = DNS.split('//');
    DNS = 'http://' + DNS[1].substr(0,DNS[1].indexOf("/"));
    return DNS;
}

所以当我在浏览器控制台中打印它时,它会返回localhost:8080/myApp/{image_src}。 但是,当我使用 gmail 打开时,它看起来完全不同。好像……

<img src="https://ci5.googleusercontent.com/proxy/FVJ1IBTWmX0l0KPlNQVY_AkDsCL02O2Y_kZS7KACQlnXgfgNvNQvjBKpn9zIdPH84N_r-ulunXvzlMCVUOWsMG1WCjfYUFVX7VpjJ5OV5RdpV2ReZFjM9Yw=s0-d-e1-ft#http://localhost:8080/resources/gtl_portal/images/newsletter/ci.png" alt="ci" class="CToWUd">

现在我收到如下问题:

  • 如何在 Normal 中实现时事通讯?我在哪里可以找到一些示例或参考资料?(我认为这可以解决很多问题)
  • 如何改变价值的东西看起来像。这很棘手,因为它嵌入在 style 属性中。:

    <td height="50px" style="background:url('/resources/images/newsletter/top_bg.png') repeat-x 0 0;padding:15px">
    

非常感谢 :D bb

【问题讨论】:

  • 请注意,Gmail 会预取图片以防止营销人员跟踪邮件何时打开,并相应地重写图片 URL。

标签: html css spring jsp newsletter


【解决方案1】:

您不能像通常那样包含外部 css,但您可以更喜欢以内联方式包装样式的方式(在 &lt;head&gt; 标记中)。所以像这样,

<style>
.bigFont{
font-size:14px;
}
<style>
<body>
<p class='bigFont' >Hi , i am bigger </p>
</body>

所以这看起来是分开的,而不是为你的标签添加样式属性,你也可以通过重用来避免一些代码。

AFAIK ,用于添加内联图像 Spring framework 具有非常好的文档。它被邮件客户端广泛支持,例如,

FileSystemResource res = new FileSystemResource(new File("c:/Sample.jpg"));
helper.addInline("identifier1234", res);

这样您就可以简单地将其用作&lt;img src='cid:identifier1234'&gt;

对于高级模板选项,您可以将您的网络应用与模板库 Apache velocity 集成

【讨论】:

  • 谢谢。但是应用您的解决方案有问题。首先,我阅读了整个 HTML(此外,它不导入外部 css,而是使用外部图像)并在 Spring 中将其作为字符串值获取。因此,像您所说的那样将图像源替换为其他图像源并不容易。有没有其他方法可以做到这一点?(我希望我可以在 HTML 级别处理这个......)。谢谢
  • 是的,您需要在html 级别处理它。该框架没有其他原生解决方案
  • 抱歉,我无法完全理解您的意思No other native solutions from the framework,因为这里的代码是Java 代码,而不仅仅是HTML。现在,主要问题揭示了如何在 HTML 而不是 CSS 中链接图像。感谢您的友好回答,对不起我的英语^^;;
  • 哦!谢谢。这是我的错误。我只是在 img 标签中放了错误的 src 字符串。
猜你喜欢
  • 2017-02-26
  • 2011-04-13
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 2020-07-03
相关资源
最近更新 更多