BAE 2.0 上 wordpress 3.5.2 原版发邮件的方法

注意!!由于 BAE 2.0 已经全面下线,本文内容不再有用!! 本站用的就是最新的原版的 wordpress 3.5.2 。玻璃泉上的 《BAE上原版wordpress发邮件教程》 文章已经说得很清楚了。以下五个步骤是根据此文针对最新 SDK 作出的修改后亲测有效的方法。 1、下载“Bcms.class.php”文件和“lib”文件夹的压缩包,也就是官方的 SDK(来自消息队列的官方文档)。后将它们放入wp-includes目录下。“sample”文件夹不用放进去。 2、接下来,在 wordpress 根目录下的 wp-config.php 文件中加入如下几行(如果已有则不用重复添加): /* 消息队列 */ define('BCMS_QUEUE','您的消息队列名那一串'); $bcms_host = 'bcms.api.duapp.com'; /* accessKey 和 secretKey 消息队列要用 */ $accessKey = getenv('HTTP_BAE_ENV_AK'); $secretKey = getenv('HTTP_BAE_ENV_SK'); 3、然后打开 wp-includes 下的 pluggable.php 文件,查找 if ( !function_exists( 'wp_mail' ) ) : 在它的上一行添加如下代码: /** * BAE Send Mail * BCMS */ if ( !function_exists( 'wp_mail' ) ) : function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() ) { require_once ABSPATH . WPINC . '/Bcms.class.php'; $bcms = new Bcms ( $accessKey, $secretKey, $bcms_host) ; $ret = $bcms->mail ( BCMS_QUEUE, $message, array($to), array( Bcms::MAIL_SUBJECT => $subject)) ; if ( false === $ret ) { return false; } else { return true; } } endif; 4、这样就行了,可以正常发出来自 BCMS 的电子邮件了。发出的邮件不出意料的落在的垃圾邮件文件夹里: 用 BAE BCMS 发出的 wordpress 重设密码邮件用 BAE BCMS 发出的 wordpress 重设密码邮件 5、Bcms 的 class 不能重复定义。BAE 环境中已经内置了一些定义,所以把报重定义 Fatal Error 的 PHP 文件内的内容全部注释掉即可。 最后,距离前文提到的《BAE上原版wordpress发邮件教程》 撰文的 2012-11-15 已经过去了一年半多,可以看到现在本文代码中调用 BCMS 的方法和那时的已经略有不同,需要 $accessKey 和 $secretKey 和指定 $bcms_host。 BCMS 的 SDK 也许将来还会再作修改,到时应该以官方的 SDK 里的 sample.php 的方法为准。 6、BAE 2.0 的 BCMS 服务有配额,配额里发邮件次数用完了就不能再发邮件了。据 BAE 客服回复,BAE 3.0 可以直接发邮件,不需要 mail 服务。有条件的可以往 BAE 3.0 (收费) 迁移,就省去这个麻烦了。