我需要WooCommerce从客户的电子邮件地址(而不是管理员电子邮件地址)发送特定的电子邮件。
背景:
我正在建立一项付费支持服务,该服务使用WooCommerce进行支付并将bbPress用作票务系统。
用户通过WooCommerce订购服务产品,并创建了新的WooCommerce订单。然后,该订单需要填充票务系统,而我的解决方法是将“新订单”电子邮件发送到电子邮件收件箱,然后由票务系统提取。显然,这并不完美,并且会引入故障点,但目前还可以。
问题是新订单电子邮件是从WooCommerce管理员电子邮件地址发送的,因此新票证与该帐户关联,而不是与创建订单的用户的帐户关联。
因此,我需要来自地址的电子邮件作为提交订单的用户的地址。
用钩子可以吗?
在woocommerce/includes/class-wc-emails.php
中,我们有以下内容:
public function send( $to, $subject, $message, $headers = "Content-Type: text/html\r\n", $attachments = '' ) {
// Send.
$email = new WC_Email();
return $email->send( $to, $subject, $message, $headers, $attachments );
}
这不包括发件人,并且因为它被埋在一个类中,所以仍然可以覆盖它吗?
非常适合任何指针。
(PS我确实很欣赏这种方法的问题,包括将电子邮件标记为垃圾邮件,但是最初,在我建立一个更强大的系统之前,这将是可管理的)
(我知道PPS存在一个几乎相同的问题,但是链接不起作用,并且与非常过时的WooCommerce相关)
答案 0 :(得分:1)
从您的客户电子邮件地址发送电子邮件是不可能的。您只能在WP_Mail标头中将客户电子邮件设置为Reply-To
。
以我的经验,您应该向另一封电子邮件收件箱中发送另一封电子邮件,并且默认情况下跳过WooCommerce发送的电子邮件。使用此钩子:
add_action('woocommerce_order_status_pending_to_processing', 'order_created_send_email');
function order_created_send_email($order_id, $order) {
$customer_email = $order->get_billing_email();
/* Code to send email with Reply-To: customer email */
}