Images in wp_mail not showing

时间:2012-07-30 作者:AlxVallejo

我创建了一个发送电子邮件的插件:

$subject = \'New comment - \'.$post_title;
    ob_start();
    include(SUBSCRIBE_USER_BASE_DIR . \'/email/message.php\');
    $message = ob_get_clean();

    foreach($user_emails as $user_email){
        $to = $user_email;
        $send_mail = wp_mail( $to, $subject, $message );
        if($send_mail){
            echo \'Mail sent\';
        }else{
            $wpdb->print_error();
        }
    }
我的电子邮件是:

<img src="<?php echo SUBSCRIBE_USER_BASE_DIR . \'/email/email_header.png\'; ?>" width="600px" height="100px" />
<div>A new comment has been posted on MySite.</div>
<div><?php echo get_the_title($comment->comment_post_ID); ?>
<p><?php echo $comment->comment_content; ?></p>
</div>
其中,SUBSCRIBE\\u USER\\u BASE\\u DIR定义为:

define(\'SUBSCRIBE_USER_BASE_DIR\', dirname(__FILE__));
除图像未出现外,此操作效果良好。相反,它是一个空的图像占位符。

我已经在我的插件中定义了电子邮件格式,如下所示:

function av_subscribe_format_email(){
    return "text/html";
}
add_filter( \'wp_mail_content_type\', create_function(\'\', \'return "text/html";\' ) );
如果我查看生成的电子邮件的来源,格式和图像也会得到确认:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><img src="/var/www/html/internal/wp-content/plugins/AV_-_Subscribe_User/email/email_header.png" width="600px" height="100px">
然而,图像仍然没有显示出来。

I should also mention that I allowed Downloading of images in Outlook to view the email.

1 个回复
最合适的回答,由SO网友:AlxVallejo 整理而成

好的,所以我将映像根路径从

define(\'SUBSCRIBE_USER_BASE_DIR\', dirname(__FILE__));

define(\'SUBSCRIBE_USER_BASE_URL\',plugin_dir_url(__FILE__)); 这起作用了。

dirname(__FILE__) 寄存器:

<img src="/var/www/html/internal/wp-content/plugins/AV_-_Subscribe_User/email/email_header.png"
鉴于后者plugin_dir_url(__FILE__) 输出:

<img src="http://mysite.com/wp-content/plugins/AV_-_Subscribe_User/email/email_header.png"
我不是百分之百清楚什么时候使用哪个,但我猜当我在站点服务器中操作时,我会使用dirname。

结束

相关推荐

How to bulk send emails

我应该发送数千封电子邮件来回应特定事件,因此电子邮件发送不是手动的,而是自动的。我的网站所在的服务器每小时都有电子邮件发送限制(每小时大约500封),所以我需要对其进行分区。是否有一些插件具有该功能?或者一些PHP库可以帮助我做到这一点?谢谢