我用PHP发送电子邮件简报。在PHP内部,我有类似
的内容<?php
//define the receiver of the email
set_time_limit(0);
$to='123@gmail.com';
$subject = 'test';
//create a boundary string. It must be unique
//so we use the MD5 algorithm to generate a random hash
$random_hash = md5(date('r', time()));
//define the headers we want passed. Note that they are separated with \r\n
$headers='MIME-Version: 1.0' . "\r\n";
$headers .= "From: 123@gmail.co.id\r\nReply-To: 123@gmail.co.id";
//add boundary string and mime type specification
$headers .= "\r\nContent-Type: text/html; boundary=\"PHP-mixed-".$random_hash."\"";
ob_start(); //Turn on output buffering
include ("contents.php");
$message = ob_get_clean();
//send the email
$mail_sent = @mail( $to, $subject, $message, $headers );
//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed"
echo $mail_sent ? "Mail sent" : "Mail failed";
?>
这是contents.php文件
<?php
// A few settings
$img_file = 'tes.jpg';
// Read image path, convert to base64 encoding
$imgData = base64_encode(file_get_contents($img_file));
// Format the image SRC: data:{mime};base64,{data};
$src = 'data: '.mime_content_type($img_file).';base64,'.$imgData;
// Echo out a sample image
echo '<img src="'.$src.'">';
?>
当我用Android智能手机打开电子邮件时,正在显示图像。但是,当我使用Web浏览器或outlock打开它时,不会显示任何图像。我不确定它是否与Gmail出于安全原因使用的代理有关,或者是否是其他内容。无论哪种方式,我都想知道是否有人遇到过这种情况,如果有的话,它是如何解决的。
答案 0 :(得分:0)
如何调查。
可能的Gmail正在将img标记的src属性添加到其CDN端点之前。要验证src属性中的实际内容,请选择image元素并在开发人员工具中进行检查:
Image in Chrome Developer Tools
它可能看起来像https://ci6.googleusercontent.com/proxy/...#data: image/gif...
,它不是有效的网址。
计划A 。
如果Gmail正在查找文件的URL而不是数据URI,您可以upload the file to Amazon S3并在src属性中指向它。
计划B 。
试试这个:
echo '<div style="background: url('.$src.') no-repeat left center;">';
而不是:
echo '<img src="'.$src.'">';