如何以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');
但是图片没有加载?有没有其他方法可以做到这一点? (关键是将徽标公司放在图像所在的位置)
答案 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)
确保您的图像路径是绝对的,并且可供用户尝试查看,例如:
答案 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);