Php Woocommerce邮件功能返回空,即使发送了邮件
我正在尝试使用wordpress发送邮件Php Woocommerce邮件功能返回空,即使发送了邮件,php,wordpress,email,woocommerce,Php,Wordpress,Email,Woocommerce,我正在尝试使用wordpress发送邮件 $subject = 'WC Send Mail Test'; // load the mailer $mailer = WC()->mailer(); $send = $mailer->send( get_option( 'admin_email' ), $subject, $mailer->wrap_message( $subject, 'a test message' ), '', '' ); if($send){ echo
$subject = 'WC Send Mail Test';
// load the mailer
$mailer = WC()->mailer();
$send = $mailer->send( get_option( 'admin_email' ), $subject, $mailer->wrap_message( $subject, 'a test message' ), '', '' );
if($send){
echo "Sent";
}else{
echo "Not sent";
}
此功能工作正常,但我无法跟踪邮件是否已发送。
$send始终为空
以上代码取自您应该使用var\u dump$send,并查看返回的内容。否则你为什么不试试使用wordpress的原生邮件功能呢
$multiple_recipients = array(
'recipient1@example.com',
'recipient2@foo.example.com'
);
$subj = 'The email subject';
$body = 'This is the body of the email';
if(wp_mail( $multiple_recipients, $subj, $body )){
// Mail Sent Successfully
}else{
// Mail not sent
}
我终于找到了解决办法。我正在努力挖掘woocommerce代码,并找到woocommerce使用此文件发送电子邮件 woocommerce/includes/class-wc-emails.php 在第214行附近,我找到了send方法 我必须更改密码
$email->send( $to, $subject, $message, $headers, $attachments );
到
因为更改wordpress核心功能是一个坏习惯,所以我找到了一种覆盖wordpress核心功能的正确方法
我刚刚在子主题中创建了一个目录结构,如
商业/包括
在这里,您必须创建一个名为class-wc-emails.php的文件,并将编辑过的文件代码粘贴到这里
请不要选择该部分或该部分对我不起作用。您不能跟踪它是什么意思?你想在哪里追踪这个?@mevius请检查我的更新代码就像代码一样简单,我可以向你保证应该返回true。。。如果邮件已发送。。无法返回null,因为它只能返回true或false…@ShravanShrama去掉最后两个参数。在您的情况下,现在应该返回true。@Phorce不起作用。。实际上,我的客户希望每种电子邮件格式都应该相同。由于我们在应用程序中使用woocommerce,所以我们决定将电子邮件格式与woocommerce订单电子邮件格式相同,这就是我使用woocommerce邮件功能的原因。我想你已经找到了答案,但标准化所有电子邮件的最佳方法是使用此插件。我真的很喜欢这个插件,通常在整个网站上都使用它,所以wordpress+woocommerce发送的所有电子邮件都遵循相同的模板。谢谢你的建议,但我的要求不适用于此。这会被视为woocommerce代码中的错误吗?如果是这样,请向他们报告,以便他们能够为每个人解决问题。还请记住,如果您更新Woocommerce,此更改将被撤消。@Forza我想是的。我应该问一下woocommerce的开发者这个问题。@Reigel你在说什么。我同意你的看法,他们在这里处理返回事宜。但是看看214号线附近。我的功能从这里发送电子邮件,不返回是处理这里。改变一个核心是坏习惯。。。你能试试最后这个建议吗?这是。。。尝试更改$mailer=WC->mailer;发送至$mailer=WC\u Email;。如果这不起作用,那么是的,改变核心是@Reigel我知道这是一个坏习惯,但我遇到了致命的错误:在使用您的建议时调用未定义的函数WC_Email。
$return = $email->send( $to, $subject, $message, $headers, $attachments );
return $return;
**OR**