【问题标题】:Add Picture In Email Body在电子邮件正文中添加图片
【发布时间】:2021-12-21 10:07:03
【问题描述】:

我不太擅长 PHP 和编程,但我仍在尝试以各种可能的方式学习它。我需要专家的帮助。我发送电子邮件的代码如下。我可以发送电子邮件,但问题是,图片未显示在电子邮件正文中,并且显示十字符号。任何可能的想法和建议表示赞赏。

<?php

function send_email($from, $to, $subject, $message){
$headers = "From: ".$from."\r\n";

$headers .= "Return-Path: ".$from."\r\n"; 
$headers .= "CC: abc@gmail.com\r\n , xyz@gmail.com\r\n";
$headers .= "BCC: \r\n";
//set content type to HTML 
$headers .= "Content-type: text/html\r\n"; 

if ( mail($to,$subject,$message,$headers) ) 
{

header("location:contact-us.php?msg=msgsent");

} 
else 
{
header("location:contact-us.php?msg=notsent");
}

}
//Function ends here
$from_email="";
$to_email="LMN@gmail.com";
$message.="<html><body background='images/bg11.jpg'>";
$message.="<p style=' color: #006789;'>Dear Team,</p> ";
$message.= "<p style=' color: #006789;'>You have received a feedback from $name & below are the details!!! </p>";
$message.= "<img src=images/c22.jpg>";
$message.="</body></html> ";
send_email(from_email,$to_email,$subject,$message);
?>

【问题讨论】:

    标签: php


    【解决方案1】:

    您正在使用相对路径:

    <img src=images/c22.jpg>
    

    当您打开邮件时,该路径在邮件客户端中没有任何意义,并且极不可能存在于 Web 邮件客户端中。如果是这样,那不是你的形象……

    如果您将该图像存储在网络服务器上,则应使用该图像的绝对路径:

    <img src="http://www.your-server.com/images/c22.jpg">
    

    【讨论】:

    • 感谢兄弟,它对我有用。而且也很简单。
    【解决方案2】:

    您正在使用相对链接“images/c22.jpg”,但您正在通过电子邮件发送此 html - 没有相对于它的 images/ 目录可链接到。如果您希望链接到网络上的图像,您可以包含完整的 url (http://someplace.com/images/bg11.jpg">)。默认情况下,这些通常也不会显示 - 大多数电子邮件阅读器将过滤它们,以免您导致它加载远程内容(提示电子邮件已打开,尝试使用格式错误的图像进行有趣的业务等)。

    您还可以通过将类型设置为多部分/混合并定义边界来将图像附加到电子邮件中。然后发送一个图像,在其标题中定义一个内容 ID,然后将您的 html 链接到内容 ID 为“cid:id-you-defined”。在电子邮件中看起来像这样:

    Content-Type: multipart/mixed; boundary="NOTUSEDINTEXT"
    This text only shows if the reader can't deal with MIME
    --NOTUSEDINTEXT
    Content-Id: id_for_later
    Content-Type: image/jpeg
    Content-Transfer-Encoding: base64
    
    /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcU
    FhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgo
    KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAABAAEDASIA
    AhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAj/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEB
    AAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AJUAB//Z
    --NOTUSEDINTEXT
    Content-Type: text/html
    
    <html><h1>Hi</h1><p>Here's an image <img src="cid:id_for_later"></html>
    --NOTUSEDINTEXT--
    

    .. 但正如您所看到的,它有点涉及 - 可能想看看是否有一个 php 库可以实现它(mime 标头和类型),而不是自己捣鼓它们。但是,如果您想处理它,也可以自己插入它们。而且.. 在这里,一些客户也会为了安全起见对其进行过滤,除非您点击“始终显示图像”或其他内容。

    【讨论】:

      【解决方案3】:

      您必须在网络服务器上上传您的图片并提供该图片的绝对路径,例如:

      <img src="http://www.yourwbesite.com/images/c22.jpg" alt="logo" />
      

      【讨论】:

        猜你喜欢
        • 2011-07-11
        • 1970-01-01
        • 1970-01-01
        • 2019-09-03
        • 2014-09-28
        • 2014-05-03
        • 2021-03-28
        • 2011-03-04
        相关资源
        最近更新 更多