从阵列中获取图像并将其嵌入电子邮件正文中

时间:2014-05-22 11:39:11

标签: arrays email phpmailer

我正在使用wordpress cms和PHPMailer。在我的表单处理器中,我有这个简单的循环,它生成一个选定图像的数组。请检查下面的相关代码块。它基本上根据通过表单提供的post id生成一个图像数组。我需要提取所有这些图片并将其嵌入电子邮件正文。请注意,我不打算将这些图像作为附件发送。这是一个剥离的代码版本。

$email = new PHPMailer();
$email->From      = 'John@example.com';
$email->FromName  = 'John Doe';
$email->Subject   = 'This is the subject of the message';                        
$body = '<table><tr><td>';

$body .=  
    $args = array('post__in' => $short_ids, 'post_type' => 'post');
    $posts = get_posts($args);

    foreach ($posts as $post) : ?>
    <?php $images = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'cover' );

    $img_url = $images[0];
    $email->AddEmbeddedImage($img_url, '1243');?>
    <img src="cid:1243"/>               
    <?php endforeach;?>

$body = '</td></tr></table><tr>';
$email->MsgHTML($body);
$email->IsHTML(true); 
$email->AddAddress( 'email@gmail.com' );
$email->Send();
  

我只是在电子邮件正文中输入了 Array 这个词。如何将此数组&gt;转换为要嵌入电子邮件正文的图像?所以我认为我基本上需要帮助进行数组操作。


更新:这是我提出的替代代码,它成功从数组中提取图像并实际回显到页面上但未嵌入图像电子邮件正文。

foreach ($posts as $post) : ?>
  <?php $images = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'cover' );
  $img_urls = $images[0]; ?>
  <img src="<?php echo $img_urls;?>">
<?php endforeach;

1 个答案:

答案 0 :(得分:0)

事实证明,使用PHPMailer将图像嵌入到体内并不一定需要使用AddEmbeddedImage。您可以通过将代码的结果附加到$ body变量,然后使用PHPMailer的$email->MsgHTML($body)来获取输出,以本机php方式执行此操作。以下是根据$select_ids中存储的post-id提取多个缩略图后的相关代码,并将结果附加到$body变量。

$args = array('post__in' => $select_ids, 'post_type' => 'post');

$posts = get_posts($args);
foreach ($posts as $post) {
$images = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'cover');
$body .=    '<a href="'.get_permalink().'"><img src="'.$images[0].'"></a>';             
} 

如果你比较新,我想指出我在剧本中犯的一个愚蠢的错误。如果您要设置第一行和第二行中的数组,请确保不要在其前面放置$body$body. =变量,否则您的代码会在您的html中输出不需要的单词Array输出,这也是我在html输出中得到单词Array的原因。