您的前提是正确的-您可以根据您可以构建到操作功能中的任何标准连接到不同的STMP帐户。
WooCommerce有点棘手,因为它有两个电子邮件对象,一个用于创建电子邮件,另一个用于发送。此外,挂接WC发送进程需要仔细研究WC,以找出需要挂接phpmailer\\u init操作的位置。
要确定发送的电子邮件是否为WC电子邮件,一个简单的方法是在设置中使用不同的“发件人”地址设置WC(这个地址无论如何都无关紧要,因为您是通过SMTP服务器发送的,并且在设置SMTP设置时设置的是“发件人”)。进入WooCommerce>Settings>Emails,设置一个与WP设置不同的唯一“发件人”地址。然后,您可以在逻辑中使用它来确定电子邮件是通过WC还是其他方式生成的。
add_action( \'phpmailer_init\', \'send_smtp\' );
function send_smtp( $phpmailer ) {
// Assuming the WC email is set to a different address than all others (i.e. WP General Settings email).
$woo_from = get_option( \'woocommerce_email_from_address\' );
// If phpMailer is initialized with the WooCommerce from address...
if ( $phpmailer->From == $woo_from ) {
// This is a WooCommerce email.
$phpmailer->Host = SMTP_WC_HOST;
$phpmailer->SMTPAuth = SMTP_WC_AUTH;
$phpmailer->Port = SMTP_WC_PORT;
$phpmailer->Username = SMTP_WC_USER;
$phpmailer->Password = SMTP_WC_PASS;
$phpmailer->SMTPSecure = SMTP_WC_SECURE;
$phpmailer->From = SMTP_WC_FROM;
$phpmailer->FromName = SMTP_WC_NAME;
} else {
// It\'s NOT a WooCommerce email.
$phpmailer->Host = SMTP_HOST;
$phpmailer->SMTPAuth = SMTP_AUTH;
$phpmailer->Port = SMTP_PORT;
$phpmailer->Username = SMTP_USER;
$phpmailer->Password = SMTP_PASS;
$phpmailer->SMTPSecure = SMTP_SECURE;
$phpmailer->From = SMTP_FROM;
$phpmailer->FromName = SMTP_NAME;
}
}
UPDATE: 请重新阅读您的问题,这样可能会有点偏离。你说你想要一个用于WC订单,另一个用于所有其他表单。我上面提到的是任何WC电子邮件与任何非WC电子邮件。取决于你所说的“其他表单”(因为还有其他WC表单和电子邮件),这可能不是你所需要的。如果是这样,请在评论中提及,我将进行相应的编辑。可能您只需要检查主题行,看看它是否是订单。