放牧代码和思想
专注自然语言处理、机器学习算法

BAE发邮件的方法,已封装成可重用函数

在BAE刚上线的那段黄金时间,不仅可以利用BAE提供的BCMS发送邮件,还可以发送短信,其中邮件可以任意指定发件人,你指定liyanhong@baidu.com都没有关系!短信也是免费的,随便发。那段日子里BAE真可谓是狂野的西部呀,不过现在BAE已经补上了这些漏洞。现在BAE不仅取消了短信,而且取消了发件人指定,就剩下了每个月9000条的邮件。其实光发邮件也没有什么意思,用smtp照样可以发。不过一般提供smtp的免费邮箱都有发送数量限制的,估计也没有9000封那么多吧。从这一点来看,BCMS似乎还是很大方的。

为了方便大家使用,我封装了一个简单的BCMS邮件函数:

/**
 * @param string $to
 * @param string $subject
 * @param string $message
 * @param string $bcms_queue
 * @param string $from
 * @return boolean
 * @tutorial BCMS邮件发送函数,最近BAE封掉了Bcms::FROM
 * @example mail_bcms("hankcs@test.com", "主题", "正文", "消息队列名", "hankcs@baidu.com");
 */
function mail_bcms($to, $subject, $message, $bcms_queue, $from = '')
{
    require_once 'Bcms.class.php';
    $bcms = new Bcms();
    $ret = $bcms->mail($bcms_queue, 
                       $message, 
                       array($to), 
                       array(
                                Bcms::FROM => $from,
                                Bcms::MAIL_SUBJECT => $subject
                     ));
    if(false === $ret)
    {
        return false;
    }
    else
    {
        return true;
    }
}

你需要先去http://developer.baidu.com/bae/bms/list/创建一个消息队列:

显示名称随便填,队列名称是系统生成的,很长一串。

Bcms.class.php是云平台内置的SDK,不需要你专门上传,用一句:

mail_bcms("hankcs@test.com", "主题", "正文", "队列名称", "hankcs@baidu.com");

就可以测试了,结果如图:

本来我指定了发件人是hankcs@baidu.com的,但是BCMS封掉了这项功能,将其替代为337XXXXX-noreply@duapp.com。

知识共享许可协议 知识共享署名-非商业性使用-相同方式共享码农场 » BAE发邮件的方法,已封装成可重用函数

分享到:更多 ()

评论 10

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    博主 请问您能写一个不在BAE上就能发百度云消息邮件的代码吗?就是输入列队名 秘钥就能发的PHP代码

    释然3年前 (2014-03-13)回复
    • 这又何必呢,BAE邮件经常被识别为垃圾邮件。非BAE环境没有限制,有多种更好的方式发邮件。

      hankcs3年前 (2014-03-14)回复
      • 博主大人 我就喜欢这个百度的 求您写一个 真心求 进垃圾箱也行 学习一下

        释然3年前 (2014-03-15)回复
        • bcms只能在BAE环境里用,这样好了,你在BAE上建一个应用用这段代码发邮件,然后在外面调用应用的URL+参数就行了。

          hankcs3年前 (2014-03-17)回复
        • 好的 谢谢博主

          释然3年前 (2014-03-18)回复

我的开源项目

HanLP自然语言处理包基于DoubleArrayTrie的Aho Corasick自动机