1

如何在 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'].' €&lt;/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');

但是图像不加载?有没有其他方法可以做到这一点?(重点是放图片的地方放logo公司)

4

10 回答 10

4

您的图像需要托管在公共 URL 上,然后在电子邮件中使用

例如

$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 不会解析它以进行插值。

于 2013-06-21T08:46:41.530 回答
3

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

像这样 $image= " http://yourdomain.com/images/image_name.ext "

于 2013-06-21T08:47:52.373 回答
2

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

.如果 $message 以前不存在,也从中删除-

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

是的,纠正它——

$message = "<img src='".$image."'>";
于 2013-06-21T08:53:27.037 回答
1

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

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

于 2013-06-21T08:46:27.120 回答
1

尝试使用图像的完整路径。所以:

 www.example.com/site/images/link.png
于 2013-06-21T08:46:35.350 回答
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.">:)

这一切都有些棘手,因为当使用双引号时,php在引号内解析变量。但是,如果您想将引号作为字符串的一部分(最迟)给出,它可能会非常混乱——而单引号(更严格)可能更容易理解。

希望这对您有帮助!oe

于 2016-02-13T18:44:54.497 回答
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'].' €&lt;/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');
于 2013-06-21T08:49:40.380 回答
0

解决了这个问题。

使您的图像可变:

$image = 'http://lcda.fr/site/abonnement/img/logo.png';
于 2013-06-21T08:55:33.233 回答
0

显然,如果我将链接直接放在“img”标签中,它会起作用。谢谢

于 2013-06-21T09:10:46.600 回答
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);
于 2016-07-06T00:30:16.280 回答