如何在我从Perl CGI脚本发送的HTML电子邮件中包含CSS文件?

时间:2009-07-31 23:26:52

标签: html css perl email cgi

我正在使用以下代码通过CGI perl创建和发送电子邮件。图像正确附加,但css文件没有。

  my $msg = new MIME::Lite(
            From    => $from,
            To      => $to_list,
            Subject => "My subject",
            Type    => 'text/html',  # 'multipart/mixed'
            Data    => $body
           );
 $msg->attach(Type => 'multipart/mixed',      Path => $DOCS_URL . "/fonts-min.css");
 $msg->attach(Type => 'multipart/mixed',      Path => $DOCS_URL . "/eat.css");
 $msg->attach(Type => 'multipart/mixed',      Path => $DOCS_URL . "/site_styles2.css");
 $msg->attach(Type => 'multipart/mixed',      Path => $DOCS_URL . "/calendar_layout.css");
 $msg->attach(Type => 'multipart/mixed',      Path => $DOCS_URL . "/errnacc.css");
 $msg->attach(Type => 'image/png',    Path => $DOCS_URL . "/separator.gif");
 $msg->attach(Type => 'image/png',    Path => $DOCS_URL . "/trans_pixel.gif");
 $msg->attach(Type => 'image/png',    Path => $DOCS_URL . "/itg_side.gif");

 $msg->send();

图像正确附加,但css文件根本没有附加。 知道什么'Type'应该用于附加CSS文件? 或者还有其他问题吗?

6 个答案:

答案 0 :(得分:7)

我相信 text / css 应该没问题

答案 1 :(得分:6)

在我的测试中,许多电子邮件客户端只需在显示电子邮件之前删除所有头元素。因此,如果您必须支持各种电子邮件客户端,则使用外部样式表是不可行的。

我的建议是将样式直接包含在HTML中,这很痛苦。

答案 2 :(得分:2)

我不得不说,如果您要对脚本执行的操作是发送HTML格式的电子邮件,即使您将CSS文件作为附件发送,也不会起作用。

完全有信心的唯一方法是发送带有使用绝对URL链接的所有外部文件的HTML。甚至然后它将无法按照你期望的方式工作。

答案 3 :(得分:2)

尝试使用内联css ...它有效(请参阅http://www.tizag.com/cssT/inline.php

答案 4 :(得分:0)

我认为你已经得到了你的答案,但在我看来,好的方法是,不要直接输入HTML代码,使用一些基于html的邮件信封,在单独的html文件中有消息和占位符,然后解析并替换占位符,以便你可以使用CSS很容易,我认为它也很容易维护。

答案 5 :(得分:0)

刚遇到同样的问题。您可以尝试使用此工具,http://templates.mailchimp.com/resources/inline-css/ 记得保存原始模板的副本,以备需要更新时使用