
在woocommerce中发送自定义邮件并附加文件,需要对woocommerce的邮件系统有深入的理解。核心在于正确实例化邮件发送器(mailer)对象,并以正确的方式构建邮件内容和附件路径。常见的错误包括使用过时的方法获取mailer实例、不正确的附件文件路径,以及对邮件发送函数参数的误用。
WooCommerce推荐使用WC()->mailer()来获取邮件发送器实例,而不是依赖全局变量$woocommerce。这确保了与最新WooCommerce版本的兼容性和代码的健壮性。
以下是构建和发送带有附件的自定义邮件的步骤:
以下是一个修正后的代码示例,演示如何在订单状态变为“已完成”(completed)且支付方式为“dobirka”时,向客户发送一封带有PDF附件的自定义邮件。
/**
* 在WooCommerce订单状态改变时发送带附件的自定义邮件。
*
* @param int $order_id 订单ID。
* @param string $old_status 订单旧状态。
* @param string $new_status 订单新状态。
* @param WC_Order $order WC_Order 对象。
*/
function custom_woocommerce_order_status_changed_send_gift_email( $order_id, $old_status, $new_status, $order ) {
// 检查订单新状态是否为“已完成”且支付方式为“dobirka”
if ( 'completed' === $new_status && 'dobirka' === $order->get_payment_method() ) {
// 获取WooCommerce邮件发送器实例
$mailer = WC()->mailer();
// 定义邮件接收者、主题和消息体
$to = $order->get_billing_email();
$subject = sprintf( __( '您的订单 #%s 附带惊喜礼物!', 'your-text-domain' ), $order->get_order_number() );
$message_body = sprintf(
__( '亲爱的 %s,<br><br>感谢您在我们的商店购物!您的订单 #%s 已完成,我们为您准备了一份小礼物,请查收附件中的PDF文件。<br><br>祝您购物愉快!', 'your-text-domain' ),
$order->get_billing_first_name(),
$order->get_order_number()
);
// 包装邮件消息,添加邮件头(如“亲爱的 [客户名]”)
// 注意:这里的wrap_message的第一个参数通常是邮件的标题或头部,
// 第二个参数是邮件正文。这里我们直接将欢迎语包含在message_body中,
// 头部可以是一个通用标题。
$message = $mailer->wrap_message(
sprintf( __( '订单 #%s 已完成', 'your-text-domain' ), $order->get_order_number() ),
$message_body
);
// 定义邮件头,声明邮件内容为HTML格式
$headers = 'Content-Type: text/html; charset=UTF-8' . "\r\n";
// 定义附件路径数组
// 请确保 '/file.pdf' 是您实际文件在wp-content目录下的相对路径
$attachments = array( WP_CONTENT_DIR . '/file.pdf' );
// 发送邮件
// 参数顺序:收件人、主题、消息、邮件头、附件
$mailer->send( $to, $subject, $message, $headers, $attachments );
}
}
add_action( 'woocommerce_order_status_changed', 'custom_woocommerce_order_status_changed_send_gift_email', 10, 4 );
在WooCommerce中为自定义邮件添加附件是一个常见的需求。通过正确理解和使用WC()->mailer()实例、构建正确的附件绝对路径,并利用合适的动作钩子,开发者可以轻松实现这一功能。遵循上述指南和最佳实践,将确保您的自定义邮件系统稳定、高效且功能完善。
以上就是在WooCommerce自定义邮件中添加附件的专业指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号