【问题标题】:AddEmbeddedImage() function embadding inline images as well as attaching same image as attachementAddEmbeddedImage() 函数嵌入内联图像以及附加相同的图像作为附件
【发布时间】:2013-08-29 00:36:25
【问题描述】:

我在 PHPMailer 对象中添加了以下参数。虽然我使用 AddEmbeddedImage() 函数嵌入了用于内联目的的图像,但它按预期工作,但另外附加了相同的图像作为电子邮件的附件并显示在底部。

$msg = `<table><tr><td colspan="2"><img  src="cid:header_jpg" alt="www.example.in" width="770" height="4" border="0" /></td></tr></table>`;

$mail = new PHPMailer(true); //New instance, with exceptions enabled
$mail->IsSMTP(); // tell the class to use SMTP
$mail->SMTPAuth   = false;        // enable SMTP authentication
$mail->Port       = 25;           // set the SMTP server port
$mail->Host       = 'localhost';  // SMTP server
$mail->Username   = "";           // SMTP server username
$mail->Password   = "";           // SMTP server password

$mail->AddReplyTo($sender, $sender_name);

$mail->From       = $sender;
$mail->FromName   = $sender_name;

$mail->AddAddress($receiver);

$mail->Subject  = $subject;

//$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->WordWrap   = 80; // set word wrap

$mail->MsgHTML($msg);

$mail->IsHTML(true); // send as HTML
$mail->AddEmbeddedImage('./images/header.jpg', 'header_jpg');          
$mail->AddEmbeddedImage('./images/logo.jpg', 'logo_jpg');        
$mail->AddEmbeddedImage('./images/alert_icon.png', 'alert_icon_png', 'alert_icon.png');        
$mail->Send();

请尽早提出建议...

【问题讨论】:

  • 下次你可以在编辑器中使用Ctrl+K或{}按钮格式化代码,无需在每一行添加&lt;br/&gt;
  • 谢谢@Maerlyn :)

标签: php html email


【解决方案1】:

我在使用网络电子邮件嵌入图像时遇到了同样的问题。我尝试了不同的方法并得到了这些结果:

向 Yahoo 发送 html 电子邮件:

$mail-&gt;AddEmbeddedImage("some_picture.png", "my-attach", "some_picture.png", "base64", "image/png");

$mail-&gt;AddEmbeddedImage("some_picture.png", "my-attach", "some_picture.png", "base64", "application/octet-stream");

$mail-&gt;AddEmbeddedImage("some_picture.png", "my-attach", "some_picture.png");

同样的结果; Yahoo 正确显示了嵌入的图像,但仍然附加了它!

使用hotmail,它正确地嵌入了图像并且没有添加任何附件。

最后,我发现 PHPMailer 能够自动嵌入 HTML 电子邮件中的图像。在编写 HTML 电子邮件时,您必须将完整路径放在文件系统中。 我最终忽略了 AddEmbeddedImage,并将图像的来源直接链接到它在网站上的位置。它在 Hotmail 和 Yahoo 中都能正常工作,并且在 Yahoo 中没有添加任何附件。

&lt;img src="http://FULL_PATH-TO-IMAGE" alt="THIS IS THE IMAGE" /&gt;

不用说,除非用户单击“显示图像”按钮,否则电子邮件中的嵌入图像可能不会立即显示;这一切都取决于他们的隐私和安全设置。

我希望这会有所帮助!

【讨论】:

  • 谢谢罗...!!我浏览了您的解决方案,我使用了 $mail->AddEmbeddedImage("some_picture.png", "my-attach", "some_picture.png", "base64", "image/png");它工作正常。
  • 我无法使用 img src,因为 dir 源受 psw 保护。我无法将图像嵌入正文消息中。至少它是作为附件发送的
【解决方案2】:

恕我直言 AddEmbeddedImage 工作得很好。上面的问题是指向图像文件的第一个参数必须指定绝对主机文件路径名(又名 URI),而不是 URL。在解析为“/home/myaccountid/public_html/image_filename.jpg”的主机上。作为一个 URL,它变成了 'http://myhostid.com/image_filename.jpg'。

【讨论】:

    【解决方案3】:

    这里附上代码:

    $mail->AddEmbeddedImage('img/logo.png', 'logoimg', 'xx.png', 'base64', 'image/png');
    

    然后您可以在消息正文中执行此操作:

    <tr>
    <td>Picture Attach</td>
    <td><img  src='cid:logoimg' alt='OnlyPict' border='0' width='30%' height='5'/></td>
    </tr>
    

    【讨论】:

      猜你喜欢
      • 2020-12-31
      • 2018-07-12
      • 2019-03-19
      • 2013-06-07
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      • 2020-04-24
      • 2021-08-13
      相关资源
      最近更新 更多