Mailgun内联图片,它是如何工作的?

4

我正在使用Mailgun并希望将图片添加到我的新闻通讯中。现在我已经这样做了:

$mg->sendMessage($domain, array('from'    => 'developer@mijnprojectgroep.eu', 
                                'to'      => 'developer@mijnprojectgroep.eu', 
                                'subject' => 'Developers Mail Test MijnProjectgroep batch #1', 
                                'text'    => 'Hallo %recipient_fname%,


                'html'    => '<html>
<img style="display:block;" class="img1" src="cid:header-clip.png" width="600" height="64" />
</html>',
array('inline' => '@.././images/newsletter/header-clip.png'),

'o:tracking-opens' => 'yes'));

但是我收到了新闻通讯,却没有加载任何图片。带有上述脚本的文件位于:

根目录 --> /MailGun/

这些图片在此处:

根目录 --> /images/newsletter/

也尝试过:@../../images/newsletter/header-clip.png

文档在这里:

http://documentation.mailgun.com/user_manual.html?highlight=html#sending-via-api

我做错了什么?


我也有同样的问题。你最后解决了吗? - Erin
4个回答

4

你没有做错。实际上API文档中存在问题。

在行内图片路径中,应该使用数组而非字符串路径。这样就可以解决问题了。你可以像这样添加:

$mg->sendMessage($domain, array('from'    => 'developer@mijnprojectgroep.eu',
                                    'to'      => 'developer@mijnprojectgroep.eu', 
                                    'subject' => 'Developers Mail Test MijnProjectgroep batch #1',
                                    'text'    => 'Hallo %recipient_fname%,
                                    'html'    => '<html><img style="display:block;" class="img1" src="cid:header-clip.png" width="600" height="64" /></html>',
    array('inline' => array('@.././images/newsletter/header-clip.png') 
),
    'o:tracking-opens' => 'yes'));

请检查这一行:

array('inline' => array('@.././images/newsletter/header-clip.png') 

我可以发送单个嵌入图像。但是如果我有多个内嵌图像,我该怎么办呢?而且我有一些文本内容,然后是图像,再然后是一些文本,然后是另一个图像。我该如何动态嵌入图像呢? - Dhara
2
您可以点击以下链接查看如何发送完整的HTML电子邮件: https://dev59.com/7mEh5IYBdhLWcg3w_nyv#24877620 - israr

1
需要附加的图片需要作为sendMessage方法的第三个参数传递:
    $mgClient->sendMessage("$domain",
              array('from'    => 'Mailgun Sandbox <postmaster@sandbox.mailgun.org>',
                    'to'      => 'mr awesome <mrawesome@web.com>',
                    'subject' => 'Hello Mr',
                    'html' => '<html><img style="display:block;" class="img1" src="cid:header-clip.png" width="600" height="64" /></html>'
              ),
              array (
                'inline' => array(dirname(__FILE__).'/images/newsletter/header-clip.png')
              )
      );

请注意文件的路径:dirname(__FILE__)。您可能需要更改此内容以适应您的情况。
在Mailgun文档中也可以找到示例,在“发送内联图像”标题下 - https://documentation.mailgun.com/user_manual.html#sending-via-api

0

要在您的HTML代码中嵌入图像,您需要将inline属性设置为参数数组。这个inline属性需要一个filePath和一个fileName。例如:

$mgClient->messages()->send($domain, array(
    'from'    => 'developer@mijnprojectgroep.eu',
    'to'      => 'developer@mijnprojectgroep.eu',
    'subject' => 'Developers Mail Test MijnProjectgroep batch #1',
    'text'    => 'Hallo %recipient_fname%',
    'html'    => '<html><img style="display:block;" class="img1" src="cid:header-clip.png" width="600" height="64" /></html>',
    'inline' => array(
        array(
            'filePath' => 'path/to/images/newsletter/header-clip.png',
            'filename' => 'header-clip.png'
        )
    ),
    'o:tracking-opens' => 'yes'
));

如果您需要添加多张图片,只需为每张图片添加一个inline属性即可。
$mgClient->messages()->send($domain, array(
    'from'    => 'developer@mijnprojectgroep.eu',
    'to'      => 'developer@mijnprojectgroep.eu',
    'subject' => 'Developers Mail Test MijnProjectgroep batch #1',
    'text'    => 'Hallo %recipient_fname%',
    'html'    => '
    <html>
       <img style="display:block;" class="img1" src="cid:image1.png" width="600" height="64" />
    </html>
    <html>
       <img style="display:block;" class="img1" src="cid:image2.png" width="600" height="64" />
    </html>',
    'inline' => array(
        array(
            'filePath' => 'path/to/images/newsletter/image1.png',
            'filename' => 'image1.png'
        )
    ),
    'inline' => array(
        array(
            'filePath' => 'path/to/images/newsletter/image2.png',
            'filename' => 'image2.png'
        )
    ),
    'o:tracking-opens' => 'yes'
));

请注意,我已经添加了一个新的img标签来显示新图片。 确保每个图片的src属性中都有cid:image_name

-1

为此,您只需输入以下详细信息:

$header = FCPATH."public_html/assets/img/newsletter_header.png";

$mg->messages()->send($domain, [
  'from'    => 'xxxxxxx@gmail.com',
  'to'      => 'yyyyy <yyyyyyyy@gmail.com>',
  'subject' => 'The PHP SDK is awesome!',
  'html'    =>  $html,
  'inline' => array(
    array('filePath' => $header)
  )
]);

在你的HTML代码中:

$imageName = "newsletter_header.png";
<img src="cid:'.$imageName.'" width="408" height="100" alt="Pedul" border="0"
class="em_w150" />

为此,您需要注意以下两点:

  1. 在内联标签中添加图像的完整路径
  2. 在您的HTML代码中仅添加文件的图像名称。

请格式化您的答案,并解释它与其他6岁儿童的答案有何不同。 - miken32

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接