Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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
Php 我可以防止MIME嵌入的html图像显示为附件吗?_Php_Image_Email_Mime - Fatal编程技术网

Php 我可以防止MIME嵌入的html图像显示为附件吗?

Php 我可以防止MIME嵌入的html图像显示为附件吗?,php,image,email,mime,Php,Image,Email,Mime,以下是我用来邮寄的代码: <?php include('Mail.php'); include('Mail/mime.php'); $address = "Any old address will do"; $crlf = "\r\n"; $hdrs = array( 'From' => 'do-not-reply@mydomain.com', 'Subject' => 'Mail_mime test message' ); $mime =

以下是我用来邮寄的代码:

<?php
include('Mail.php');
include('Mail/mime.php');

$address = "Any old address will do";
$crlf = "\r\n";
$hdrs = array( 
    'From' => 'do-not-reply@mydomain.com', 
    'Subject' => 'Mail_mime test message' 
    ); 

$mime = new Mail_mime($crlf); 

$mime->addHTMLImage("emailHeader.jpg", "image/jpg");

$cid=$mime->_html_images[0]['cid'];

$html = '<html><body><center><img src="cid:'.$cid.'">This image shows up just fine</center></body></html>';
$text = 'Plain text version of email';

$mime->setTXTBody($text);
$mime->setHTMLBody($html); 

$body = $mime->get();
$hdrs = $mime->headers($hdrs);

$mail =& Mail::factory('mail');
$mail->send($address, $hdrs, $body);

?>


该图像显示在电子邮件中,但也显示为附件。这有点笨重,我能阻止它吗?

我遇到了一个问题,一些邮件客户端会将所有内联图像呈现为空框

我发现,如果没有提供域ID,PEAR Mail_mime类将尝试为您修复内容ID引用

    e.g.
    [HTML] src="123456.jpg" 
    [Headers] Content-ID: <123456.jpg>
    updates to
    [HTML] src="cid:123456.jpg@domain.com" 
    [Headers] Content-ID: <123456.jpg@domain.com>
    BUT
    [HTML] src="cid:123456.jpg" 
    [Headers] Content-ID: <123456.jpg>
    updates to
    [HTML] src="cid:123456.jpg" 
    [Headers] Content-ID: <123456.jpg@domain.com>
例如。
[HTML]src=“123456.jpg”
[标题]内容ID:
更新至
[HTML]src=“cid:123456。jpg@domain.com" 
[标题]内容ID:
但是
[HTML]src=“cid:123456.jpg”
[标题]内容ID:
更新至
[HTML]src=“cid:123456.jpg”
[标题]内容ID:
这会断开HTML标记和MIME附件之间的链接

因此,在发送电子邮件之前将域名包含在内容ID中是最好的解决方案

我在循环中发送了几封独立的电子邮件。每封电子邮件都是相同的,只是标题中的收件人在每次迭代中都会发生变化。我发现第一封电子邮件发送正确,然后在第二封和随后的电子邮件中看到内容ID的咀嚼


Outlook中的初始测试没有发现问题(图像很好)。只有在Gmail中测试才发现了这个小故障。但是,如果Gmail检测到无效数据,它将不会向您显示src属性,因此您无法仅通过Gmail中的电子邮件检查来查看问题。

这不是您问题的解决方案,但我始终发现在web上的某个位置托管您的电子邮件图像更安全,并且在您的源代码中具有完全限定的链接。不过,你需要托管。啊哈!您的意思是将其引用为http://而不是。谢谢成功了。我在主机服务器上从MailBLaster应用程序发送HTML时遇到了同样的问题。这些图像在HTML电子邮件中以内联方式显示,但在Mac Mail和Gmail Web浏览器界面中,它们都串在底部,这很难看。其他客户不这样做。大概六个月前就开始使用相同的模板。他们改变了什么,我没有!