Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 在css中使用的图像文件的电子邮件中使用cid:attachmentID的语法是什么_Html_Css_Perl_Html Email_Mime Mail - Fatal编程技术网

Html 在css中使用的图像文件的电子邮件中使用cid:attachmentID的语法是什么

Html 在css中使用的图像文件的电子邮件中使用cid:attachmentID的语法是什么,html,css,perl,html-email,mime-mail,Html,Css,Perl,Html Email,Mime Mail,我正在编写一个脚本,通过电子邮件将一些格式化的html和图像发送给收件人。使用MIME::Lite,我找到了一种发送css文件及其用作附件的图像文件的方法。该图像显示在邮件消息的末尾-作为附件。以下行似乎可以工作: <link href="cid:style.css" rel="stylesheet" type="text/css" /> 此外,如何阻止邮件客户端自行显示图像?我使用的脚本如下: my $msg = MIME::Lite->new( From =>"fr

我正在编写一个脚本,通过电子邮件将一些格式化的html和图像发送给收件人。使用MIME::Lite,我找到了一种发送css文件及其用作附件的图像文件的方法。该图像显示在邮件消息的末尾-作为附件。以下行似乎可以工作:

<link href="cid:style.css" rel="stylesheet" type="text/css" />
此外,如何阻止邮件客户端自行显示图像?我使用的脚本如下:

my $msg = MIME::Lite->new( From =>"from\@company\.com",
                               To => "to\@company\.com",,
                               Subject =>"Action Required",
                               Disposition =>'inline',
                               Type    =>'multipart/related');
$msg->attach(Type => 'text/html', Data => qq{@htFileContents});
$msg->attach(Type => 'text/html', Id => $cssFileName, Data => qq{@cssFileContents});
$msg->attach(Type => 'image/png', Id => $imageFile, Path => $imageFile);
$msg->send("sendmail","/usr/sbin/sendmail -t");

让邮件客户端从http服务器访问css或图像文件的URL不是一个选项。电子邮件必须是独立的。TIA提供了一个显示语法的示例。

这实际上不起作用。即使你奇迹般地让你的附件可以互相查看和交流,Outlook也不支持背景图像,Gmail会删除你链接的css文件和任何嵌入的css,hotmail也不支持css背景


听起来您需要在某个地方托管一封接受动态部分的HTML电子邮件,并从应用程序中触发发送,在发送之前将动态部分传递给它以填充。查看Lyris Listmanager之类的工具。

标题和上面发布的问题之间没有联系

无论如何,为了发送电子邮件,安全地显示电子邮件中附加的图像,仅使用一些cid:url引用图像是不够的

将图像附加到电子邮件具有以下细节:

  • 将图像的外部URL替换为电子邮件中附件的URL
  • 要生成的电子邮件不仅仅是默认情况下JavaMail解释的多部分/混合类型,而是MIME多部分/相关类型,以便允许电子邮件客户端使用图像
  • 必须具有图像的附件
    • 内容配置:内联;文件名=…标题,以便它们不显示为附件,而是允许电子邮件客户端使用它们
    • ContentID:唯一-name@domain标题,其中必须用实际值替换唯一名称和域,并保留! 示例:ContentId:logo。png@paysafe.com
  • 电子邮件的HTML部分(邮件正文)中的引用通过cid:content-id URL进行,其中content-id是保存图像的附件的ContentId头的值 例如:
参考资料:

  • 用于邮件协议特定属性
  • -定义CID:URL架构和addr spec的使用
  • -以以下形式定义addr规范:本地部分“@”域
  • -定义内容处置标头
  • -MIME多部分/相关内容类型-对图像内联至关重要
my $msg = MIME::Lite->new( From =>"from\@company\.com",
                               To => "to\@company\.com",,
                               Subject =>"Action Required",
                               Disposition =>'inline',
                               Type    =>'multipart/related');
$msg->attach(Type => 'text/html', Data => qq{@htFileContents});
$msg->attach(Type => 'text/html', Id => $cssFileName, Data => qq{@cssFileContents});
$msg->attach(Type => 'image/png', Id => $imageFile, Path => $imageFile);
$msg->send("sendmail","/usr/sbin/sendmail -t");