making newsletter(HTML) with SpringFramework3

…衆ロ難τιáo~ 提交于 2019-12-13 17:44:39

问题


I am sending newsletter like below with 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);
}   

In my case value of mail_desc is an HTML(it has css and other resources). Mail goes well, but its CSS and all of images are broken.

I appended to all of src value like below in JSP

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

So When I print this in browser console it returns localhost:8080/myApp/{image_src}. However, When I open with gmail it looks quite different. it looks like...

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

Now I got questions like below :

  • How to implement newsletter in Normal? Where can I find some examples or references?(I think this can solve lots of problem here)
  • How to change value things looks like. it is quite tricky, since it is embedded in style attribute.:

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

Thanks a lot :D bb


回答1:


You cant include your external css like you do normally , but you can prefer the way of wrapping the styles in the inline way (in <head> tag). So something like this,

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

so this looks separate instead adding style attribute to your tags , you can also avoid some code by resusing .

AFAIK , for adding inline images Spring framework has very good documentation. It is supported widely by mail clients, an example,

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

so that you can simply use it as <img src='cid:identifier1234'>.

For advanced templating options you can integrate your web app with Apache velocity, a templating library



来源:https://stackoverflow.com/questions/27119865/making-newsletterhtml-with-springframework3

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!