Drupal_mail()的使用

在Drupal中,发送邮件,要使用drupal_mail()的,这个函数有点特别,最主要的是,这里用到了钩子_mail()。在Drupal6中,drupal_mail()这个函数作了调整,至少是参数与5时不同了。

我写了一个模块,让用户分享drupal网站中的网址,通过电子邮件,将该地址发送给自己的朋友。当然,一个人怎么能记住自己朋友的电子邮件地址呢,我是记不住。不过确实有这样的功能需求。在drupal中,有对应的模块,比如,sharethis,addtoany,但是这些包含的功能太多,我所需要的仅仅是通过email分享。

那么就需要自己写模块了,这就用到了drupal_mail()。建议大家先到api上看看这个函数。这个函数确实比较麻烦,对于刚接触的人来说,不过学会以后还是不错的。我们来看一下提交时的函数:

function fenxiang_form_submit($form, &$form_state){

       //global $base_path;

       $to = str_replace(";",",",$form_state['values']['recipe']);

       //$to= "test@hotmail.com,test@163.com";

       //$default_from = variable_get('site_mail', ini_get('sendmail_from'));

       $from = $form_state['values']['sender'];

       $values =  $form_state['values'];

       $nid = arg(1);

       if($nid<=0){

              drupal_goto('catalog');

       }

       $node = node_load($nid);

       $url = 'http://'.$_SERVER['HTTP_HOST'].base_path().'node/'.arg(1);

       //$url = l($node->title,'node/'.arg(1));

       $values['url'] = $url;

       $values['title'] = $node->title;

       drupal_mail('fenxiang', 'fen_xiang', $to, language_default(), $values, $from);

       drupal_goto('node/'.arg(1));

}

一般都是使用;来分割多个邮箱,但是gmail特别,它使用”,”来分割多个邮箱,这是最初的字符串替换函数的用途,下面的都不用管。

看看这个drupal_mail('fenxiang', 'fen_xiang', $to, language_default(), $values, $from);

'fenxiang', 'fen_xiang',这两个,第一个是模块的名称,第2个位于fenxiang_mail()中,fenxiang_mail()是一个钩子函数:

function fenxiang_mail($key, &$message, $params){

$language = $message['language'];

  switch ($key) {

      case 'fen_xiang':

             //$message['subject'] .= '['. variable_get('site_name', 'Drupal') .'] '. $params['title'];

             $message['subject'] .= '['. variable_get('site_name', 'Drupal') .'] '. $params['title'];

      //$message['body'][] = $params['url'];

      //$message['body'][] = $params['message'];

      $message['body'][] = $params['url'];

       $message['body'][] = $params['message'];

  }

这里面就是拼邮件的各个部分的,包括标题,还有正文。在这里,你可以使用$params中传递过来的参数,来拼凑标题和正文。

而这个$params,实际上对应的就是drupal_mail()中的$values。懂得这几点,就基本上入门了,在drupal6中,邮件发送差不多算是模板化了,也就是比5要方便,也更明了,但是你需要重新学习一下这个函数的使用。

另外有一点,比较郁闷,使用smtp发的邮件,我收到后,看到的都是网站上所配置的地址,但是当你回复时,才是用户的邮箱,怎么才能将那个网站中配置的邮箱地址替换成用户自己的呢?这个我也不会。

相关链接: http://zhupou.n

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值