Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.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 addHTMLImage不工作_Php_Html_Email_Pear_Mime Mail - Fatal编程技术网

Php addHTMLImage不工作

Php addHTMLImage不工作,php,html,email,pear,mime-mail,Php,Html,Email,Pear,Mime Mail,我正在做一个项目,在论坛填写完毕后向人们发送HTML电子邮件,我已经让代码的HTML部分正常工作,但由于某些原因,在将图片嵌入到我的代码中时,无法让横幅图片显示在顶部。我以前在开发最新版本的PHP时就已经让它工作了,但是为了让我的脚本在我们的服务器上运行,我不得不降级到PHP5.3。从那以后,我使用了相同的代码,结果失败了。我尝试过许多不同的方法,但没有一种被证明是有效的。这是我的密码 require_once('Mail.php'); require_once('Mail/mi

我正在做一个项目,在论坛填写完毕后向人们发送HTML电子邮件,我已经让代码的HTML部分正常工作,但由于某些原因,在将图片嵌入到我的代码中时,无法让横幅图片显示在顶部。我以前在开发最新版本的PHP时就已经让它工作了,但是为了让我的脚本在我们的服务器上运行,我不得不降级到PHP5.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!';
require_once('Mail.php');
需要_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=新邮件\u mime(数组('eol'=>PHP\u eol));
$file='/*/*/*/dls.jpg';
$mime->addHTMLImage(文件获取内容($file),'image/jpeg',basename($file),false,“blackstone”);
#我用这段代码从mime中找出cid我试着呼应出来
#它返回了blackstone,我将其定义为addHTMLImage的第5个参数
#设置cid。
$cid=$mime->_html_图像[计数($mime->_html_图像)-1]['cid'];
$banner=
';
$message_text=$banner;
$mime->setHTMLBody($message\u text);
$mime->setTXTBody($body\u text);
$mail=mail::factory('smtp',$smtp\U凭据);
试一试{
$send=$mail->send($email,$mime->headers($headers),$mime->get());
}捕获(例外$e){
echo$e->getMessage();死亡;
}
回音“已发送邮件!”;

我尝试过很多不同的方法,比如完全不使用cid,这是我比较喜欢的,因为很多邮件客户端都不能很好地使用cid,但是在PEAR手册中,建议在src属性中使用cid。我使用的是gmail,但我不认为这是问题所在,因为在我运行新版php时它就起作用了。每当我打开电子邮件时,它的html部分都会工作。图像应该位于的位置有一个小图像图标,但没有显示图像

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

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

您是否尝试在服务器上使用图像的硬路径?这也是关于
$file='/*/*/*/*/dls.jpg'mime\u content\u type($file)
,而不是硬编码。$file只是审查,谢谢您的回复。发送时,图像不会显示在电子邮件中,而是作为附件显示在底部。我检查了gmail中的元素,找到了url,并将代码更改为这样引用它。我在这方面取得了奇怪的成功,它甚至可以在不同的邮件客户端上工作,比如aol。我几乎肯定这是一个不好的方法,但是,你是,因为这是一个静态链接到一个单一的图像在谷歌服务器上。您可以通过其他邮件客户端访问它的唯一原因是,a)该副本存在于您的收件箱中,b)您已登录并具有查看该副本的权限。图像的“src”在实际电子邮件html中显示为什么?您是否尝试过在服务器上使用图像的硬路径?这也与
$file='/*/*/*/dls.jpg'有关mime\u content\u type($file)
,而不是硬编码。$file只是审查,谢谢您的回复。发送时,图像不会显示在电子邮件中,而是作为附件显示在底部。我检查了gmail中的元素,找到了url,并将代码更改为这样引用它。我在这方面取得了奇怪的成功,它甚至可以在不同的邮件客户端上工作,比如aol。我几乎肯定这是一个不好的方法,但是,你是,因为这是一个静态链接到一个单一的图像在谷歌服务器上。您可以通过其他邮件客户端访问它的唯一原因是,a)该副本存在于您的收件箱中,b)您已登录并具有查看该副本的权限。图像的“src”在实际电子邮件html中显示为什么?使用绝对url将需要我将图像上载到服务器,然后在img src代码中引用url。我认为这将是一个简单的解决方案,我已经挣扎了一段时间的问题。我在网上读到过这样做是不安全的,并且会使您的服务器易受攻击。这是真的吗?有安全的方法吗?谢谢你的帮助@说实话,我对此一无所知。。这是我第一次听到这个消息。另外,除了绝对URL的工作之外,我从来没有做过任何事情,我得出的结论是它是s