在电子邮件正文中显示附加图像

Posted

技术标签:

【中文标题】在电子邮件正文中显示附加图像【英文标题】:Display attached image in email body 【发布时间】:2013-05-27 07:01:47 【问题描述】:

我有一个脚本,它使用 phpmailer() 发送电子邮件,并附有图像,该图像也显示在电子邮件正文中。使用 Outlook 或某些移动客户端的接收者报告他们在查看电子邮件正文中的图像时遇到问题。 我试图检查雷鸟附加签名的方式。据我了解,图像是通过它的附件 ID 链接的,但不显示为附件(我不是在寻找这种确切的行为,它仍然可以作为附件,但确实需要它显示在 Outlook 和移动客户端中)。 所以我的问题是我应该如何更改我的脚本,以便将我的图像附加到电子邮件中,就像雷鸟附加签名一样,或者是否有标准或最佳做法? 编辑:发送电子邮件脚本中使用的代码:

$subject = 'Subject - ';
$emails = get_emails()
foreach ($emails as $email) 
define("PHPMAILER",0);
$message = $content;
$path = 'xxx';
require_once ($path);
$mailer = new PHPMailer();
$mailer->SMTPDebug = true;
$mailer->IsSMTP();
$mailer->Host = 'xxx';
$mailer->SMTPAuth = true;
$mailer->SMTPSecure = 'tls';
$mailer->Username = 'xxx';
$mailer->Password = 'xxx';
$mailer->FromName = 'xxx';
$mailer->From = 'xxx';
$mailer->AddAddress($email,"xxx");
$mailer->Subject = $subject;
$mailer->Ishtml(true);
//get the images that needs to be embedded
$embeds = get_images($firma_id,0);
if ($embeds == 0) echo "No embeds"; else 
  foreach ($embeds as $key => $value) 
    $mailer->AddEmbeddedImage($value,"img".$key,"grafic_".$key.".png");
  
  $mailer->MsgHTML($message);
  if (!$mailer->Send()) 
    exit;
  


内容如下:

             <td style='font-family: Arial; font-size: 12px;'>
           <img style='margin-right: 10px;' src='cid:img".$grafic."' alt='grafic".$grafic."' width='800' align='left'>
         </td>

【问题讨论】:

【参考方案1】:

您为附加的图像创建一个名称/标识符,并在您要显示的位置(主体)的图像标签中调用它。代码如下所示,

$mail->AddEmbeddedImage('img/image1.jpg', 'logo');

<img src='cid:logo\' />

【讨论】:

以上是关于在电子邮件正文中显示附加图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 App 中将 ImageView 中的图像附加到电子邮件

如何在电子邮件正文中添加图像

如何删除图像作为附件但显示在电子邮件正文中

在使用 Excel VBA 发送的电子邮件中内联附加图像

当我们使用 phpMailer 发送带有动态内容的邮件时,如何在电子邮件正文中显示多个内联图像

Outlook 将图像显示为在邮件的 HTML 正文中引用的附件