我创建了一个发送电子邮件的插件:
$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.
最合适的回答,由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。