2

我正在开发一个项目,该项目在填写论坛后向人们发送 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 部分都会起作用。图像应该在的地方有一个小图像图标,但没有显示图像。

4

1 回答 1

-1

图像 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。

于 2013-02-17T15:19:30.220 回答