如何在php邮件中插入图像?

时间:2013-06-21 08:43:31

标签: html image php

如何以php邮件形式插入图像?

我有这段代码:

$headers  = 'MIME-Version: 1.0' . "\n";
        $headers .='Content-Type: text/html; charset="UTF-8"'."\n";
        $headers .='From: text@example.fr';       
        $image = "http://lcda.fr/site/abonnement/img/logo.png";
        //ecriture du message 

        $message .= '<img src=".$image.">';
        $message .= '<p><br/>Votre commande a bien été  enregistrée sous le numéro/ <span style="color:blue">Your command has been successfully recorded under the number :</span> <b>(ref - '.$_SESSION['refvb'].')</b></p>';      
        $message .= '<table width="500">';
        $message .= '<tr><th colspan="2" align="left">Informations abonnement/<span style="color:blue"> Subscription informations</span> :</th></tr>';
        $message .= '<tr><td width="250">Abonnement/<span style="color:blue"> Subscription</span> : </td><td>'.$infoabo['abo'].'</td></tr>';
        $message .= '<tr><td>Durée/<span style="color:blue"> Duration</span> : </td><td>'.$infoabo['duree'].' an(s) </td></tr>';
        $message .= '<tr><td>Quantité/<span style="color:blue"> Quantity</span> : </td><td>'.$infoabo['quantite'].'</td></tr>';
        $message .= '<tr><td>Localisation/<span style="color:blue"> Localisation</span> : </td><td>'.$infoabo['zone'].'</td></tr>';
        $message .= '<tr><td>Prix/<span style="color:blue"> Price</span> : </td><td>'.$infoabo['prix'].' €</td></tr>';  
        $message .= '<tr><td>Commencer l\'abonnement au prochain numéro/<span style="color:blue"> Start the subscription in the next issue</span> : </td><td>'.$startabo.'</td></tr>';  
        $message .= '</table>'; 

        }
        $message .= '<br><p><b>Mode de paiement/<span style="color:blue"> Payment</span> : '.$mode;        
        $message .= '</p>';
        $message .= '';                

        //envoie du mail   
        ini_set("sendmail_from",'test@example.fr');

但是图片没有加载?有没有其他方法可以做到这一点? (关键是将徽标公司放在图像所在的位置)

10 个答案:

答案 0 :(得分:4)

您的图片需要托管在公开网址上,然后在电子邮件中使用

例如

$image = 'http://cdn.mydomain.tld/image.png';    

更新

由swapnesh发布(因此归功于他),您的字符串连接错误(尽管他的更正错误),因此您的$image路径不在您的字符串中。

你需要

// correct
$string = '<img src="'.$image.'">'; //=> <img src="image.png">

// wrong
$string = '<img src=".$image.">'; //=> <img src="$image">

请注意字符串中的额外'单引号。你没有打破字符串来添加变量,并且由于主字符串用单引号括起来,PHP不会解析它以进行插值。

答案 1 :(得分:3)

您必须在$ image变量中提供完整的url路径。

喜欢这个$ image =“http://yourdomain.com/images/image_name.ext

答案 2 :(得分:2)

在电子邮件中设置Absolute图片路径。

同时从之前不存在的$ message中删除. -

$message = '<img src="$image">';

是的,纠正它 -

$message = "<img src='".$image."'>";

答案 3 :(得分:1)

确保您的图像路径是绝对的,并且可供用户尝试查看,例如:

http://www.google.com/image.png

答案 4 :(得分:1)

尝试使用图像的完整路径。这样:

 www.example.com/site/images/link.png

答案 5 :(得分:1)

很高兴你解决了它。只是为其他人提供一些启示: 这是一个引用问题。

这是您的尝试之一:

$message .= '<img src="$image">';

在php中,双引号和单引号的行为不同。打开单个引号时,一切都将按原样进行。因此不会解析变量$ image。因此,在您的邮件源代码中,您会看到:<img src="$image">当然无法正常工作。

如果您希望将变量识别为变量并进行解析,则必须在变量之前关闭单引号。这是一种可能性:

$message .= '<img src="'.$image.'">';

这里php不会解析,只是在单引号中写所有,包括双引号(这是智能部分),然后我们再次保留引号和php解析,这样才能识别变量并添加其内容。然后(当我们再次输入单引号时)php写下内部的所有内容,再次包括双引号。所以你得到了你想要的东西:

<img src="http://lcda.fr/site/abonnement/img/logo.png">

(请注意与您的第一个版本的区别:

$message .= '<img src=".$image.">';

您也不要在变量前关闭单引号。因此,在您的邮件源代码中,您将阅读:<img src=".$image.">

所有这一切都有点棘手,因为当使用 double 引号时,变量通过引号内的php解析。但是如果你想要给出双引号作为你的字符串的一部分(最迟),它可能会很混乱 - 并且单引号(更严格)可能更容易理解

希望这会有所帮助 问候! OE

答案 6 :(得分:0)

您的$ image必须有绝对网址;  尝试下面编辑的代码;

    $headers  = 'MIME-Version: 1.0' . "\n";
    $headers .='Content-Type: text/html; charset="UTF-8"'."\n";
    $headers .='From: text@example.fr';       
    $image = "http://framework.zend.com/images/head-bottom-picture.png";
    //ecriture du message 

    $message .= '<img src="$image">';
    $message .= '<p><br/>Votre commande a bien été  enregistrée sous le numéro/ <span style="color:blue">Your command has been successfully recorded under the number :</span> <b>(ref - '.$_SESSION['refvb'].')</b></p>';      
    $message .= '<table width="500">';
    $message .= '<tr><th colspan="2" align="left">Informations abonnement/<span style="color:blue"> Subscription informations</span> :</th></tr>';
    $message .= '<tr><td width="250">Abonnement/<span style="color:blue"> Subscription</span> : </td><td>'.$infoabo['abo'].'</td></tr>';
    $message .= '<tr><td>Durée/<span style="color:blue"> Duration</span> : </td><td>'.$infoabo['duree'].' an(s) </td></tr>';
    $message .= '<tr><td>Quantité/<span style="color:blue"> Quantity</span> : </td><td>'.$infoabo['quantite'].'</td></tr>';
    $message .= '<tr><td>Localisation/<span style="color:blue"> Localisation</span> : </td><td>'.$infoabo['zone'].'</td></tr>';
    $message .= '<tr><td>Prix/<span style="color:blue"> Price</span> : </td><td>'.$infoabo['prix'].' €</td></tr>';  
    $message .= '<tr><td>Commencer l\'abonnement au prochain numéro/<span style="color:blue"> Start the subscription in the next issue</span> : </td><td>'.$startabo.'</td></tr>';  
    $message .= '</table>'; 

    }
    $message .= '<br><p><b>Mode de paiement/<span style="color:blue"> Payment</span> : '.$mode;        
    $message .= '</p>';
    $message .= '';                

    //envoie du mail   
    ini_set("sendmail_from",'test@example.fr');

答案 7 :(得分:0)

解决了问题。

让你的形象变得可变:

$image = 'http://lcda.fr/site/abonnement/img/logo.png';

答案 8 :(得分:0)

显然,如果我将链接直接放在“img”标签中,它就有效。 感谢

答案 9 :(得分:0)

我根据其他答案做了以下事项:

$comments .= "<center><img src='http://mywebsite.com/thepic468white.jpg' alt='logo' width='468' height='60'></center>";
$comments .= $mail; /*message posted from textarea box on associated htmlpage.*/
$sent = mail($tosubscriber,$subject,$comments,$headers);