PHP邮件功能不发送图像

Posted

技术标签:

【中文标题】PHP邮件功能不发送图像【英文标题】:PHP mail function not sending image 【发布时间】:2016-05-22 13:55:10 【问题描述】:

我正在制作一个邮件功能,它可以发送一些带有图片的文本,它适用于纯文本,但添加 img 代码后,收件人得到的仍然是纯文本。该图像位于根目录中。

代码如下:

<form method="POST">
<input name="submit" type="submit"  value="send!"/>
</form>
<?php 
if(isset($_POST['submit']))
$to="example@outlook.com";
// subject
$subject = 'test05';

// message
$message = "
<html>
<head>
  <title>Birthday Reminders for August</title>
</head>
<body>
  <p>Here are the birthdays upcoming in August!</p>
  <table>
<img id='cat' width='208px' src='/cat.jpg'>
  </table>
</body>
</html>

";

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'Reply-To: example@outlook.com' . "\r\n";

// $headers .= 'From: Panpan <general@panpan.tokyo>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";


// mail($to, $subject, $message, $headers);
      if (mail($to, $subject, $message, $headers)) 
        // echo "Mail was sent! Great!";
        echo $message;
       
      else 
        echo "Mission Failed";
      


?>

【问题讨论】:

图片需要是绝对路径,不能是相对路径 【参考方案1】:

邮件客户端知道如何处理这个问题?:

/cat.jpg

cat.jpg 是否在 gmail.com 的根中?它在 Outlook 应用程序的根目录中吗?邮件客户端根本无法知道您的图像在哪里,因为您没有告诉它在哪里查看。

使用完全限定的 URL:

http://somedomain.com/cat.jpg

另请注意,某些邮件客户端可能仍会忽略这一点,这可能取决于用户设置。链接到邮件中的资源是一种旧的垃圾邮件发送者技巧,用于跟踪邮件是否被打开/阅读。消息中的Embedding the image as a resource 通常是更好的方法。

【讨论】:

以上是关于PHP邮件功能不发送图像的主要内容,如果未能解决你的问题,请参考以下文章

php : 电子邮件发送失败,附件不止一个

电子邮件不发送PHP邮件功能[重复]

php图像显示无需在邮件中下载

如何强制电子邮件程序显示使用 php 在 html 电子邮件中发送的图像?

PHP邮件功能html内容在电子邮件中不可见

php发送邮件