我正在做一个项目,该项目在论坛填写完毕后向人们发送HTML电子邮件,我已经完成了代码的HTML部分,但由于某种原因,在将图像嵌入代码时无法使横幅图像显示在顶部。我以前在开发最新版本的PHP时就已经完成了,但为了让我的脚本在服务器上运行,我不得不降级到PHP 5.3。从那以后,我使用了相同的代码,结果失败了。我尝试了很多不同的方法,但都没有被证明是有效的。这是我的代码
require_once('Mail.php');
require_once('Mail/mime.php');
$smtp_credentials = array('host' => 'smtp.postmarkapp.com', 'port' => 25, 'auth' => TRUE, 'username' => '*', 'password' => '*');
$headers = array('From' => '*', 'To' => $email, 'Subject' => $subject);
$mime = new Mail_mime(array('eol' => PHP_EOL));
$file = '/*/*/*/dls.jpg';
$mime->addHTMLImage(file_get_contents($file),'image/jpeg',basename($file),false, "blackstone");
#I used this code to fish out the cid out of mime I tried echoing this out and
# it returned blackstone which I defined as the 5th parameter of addHTMLImage which
# sets the cid.
$cid=$mime->_html_images[count($mime->_html_images)-1]['cid'];
$banner = '<span style="color:#1f497d">
<img width = "623" height = "85" src = "cid:' . $cid . '" />
</span>';
$message_text = $banner;
$mime->setHTMLBody($message_text);
$mime->setTXTBody($body_text);
$mail = Mail::factory('smtp', $smtp_credentials);
try {
$send = $mail->send($email, $mime->headers($headers), $mime->get());
} catch (Exception $e) {
echo $e->getMessage(); die;
}
echo 'mail sent!';
我尝试过很多不同的方法,比如完全不使用cid,这是我更喜欢的,因为很多邮件客户端都不能很好地使用cid。但在PEAR手册中,建议在src属性中使用cid。我正在使用gmail,但我不认为这是问题所在,因为它在我运行php的新版本时起作用。每当我打开电子邮件时,它的html部分就会起作用。图像应该在的地方有一个小的图像图标,但没有显示图像。
图像url应该是绝对url。。不是路径(相对或绝对)。。它不能是路径,必须是图像的完整url。
因此,您需要使用一个有效的url,例如下面的url。
http://www.example.com/images/image-name.jpg
下面这样的东西是行不通的。
../path/to/images/image-name.jpg
以下情况也是如此(不起作用):
/root/public/path/to/images/image-name.jpg
因此,请确保为您的图像指定了一个有效的url。