在电子邮件PHP中包含图片

时间:2018-07-12 13:45:16

标签: php email

我遇到一个问题,其中只有正文中的文本才出现,图像破损了,有人看到我可能出问题了吗?

<?php
  require("php/PHPMailer.php");
  require("php/SMTP.php");

  if (isset($_GET['email'])) {

    $emailID = $_GET['email'];

    if($emailID = 1){
      $mail = new PHPMailer\PHPMailer\PHPMailer();
      $mail->IsSMTP(); // enable SMTP

      $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
      $mail->SMTPAuth = true; // authentication enabled
      $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail
      $mail->Host = "";
      $mail->Port = 465; // or 587
      $mail->IsHTML(true);
      $mail->Username = "";
      $mail->Password = "";
      $mail->SetFrom("");
      $mail->Subject = "Test";
      $mail->Body = '<html><body><p>My Image</p><img src="images/EmailHeader.png" width="75%"></body></html>';

      $mail->AddAddress("");

      if(!$mail->Send()) {
          echo "Mailer Error: " . $mail->ErrorInfo;
      } 
      else {
          echo "Message has been sent";
      }
    }
  }
?>

2 个答案:

答案 0 :(得分:0)

您使用的图片网址是相对的。您需要使用完整网址

代替:

<img src="images/EmailHeader.png" width="75%">

它必须是公众可以看到的绝对URL,例如:

<img src="https://image-website.com/images/EmailHeader.png" width="75%">

答案 1 :(得分:0)

您无法在电子邮件中使用relative path上传图片。您必须使用full path,因为发送邮件时,它需要完整的路径来获取图像内容。

替换此行,

  $mail->Body = '<html><body><p>My Image</p><img src="images/EmailHeader.png" width="75%"></body></html>';

在这一行,

  $mail->Body = '<html><body><p>My Image</p><img src="http://your-domainname.com/images/EmailHeader.png" width="75%"></body></html>';

另一个选择是您可以使用base64张图片。但是在您的情况下,您必须给出完整的路径。