drupal7发邮件跟drupal5也是有挺多的差别的,使用drupal_mail发送邮件,邮件内容的相关信息都是在调用drupal_mail的方法事,在$params这个参数中传递进来,生成message的subject和body则是调用hook_mail()
! j5 D5 j: U, _0 V0 I1 D+ ~# X$ d9 ], C6 U
如果使用smtp来发送mail呢?这个很简单,因为drupal的module很多(要感谢那些无私奉献的人),简单介绍下: $ S" S+ r' H7 G
一:下载PHPMailer http://drupal.org/project/phpmailer ( {& ~- B2 Q5 e! v, }- A5 l2 {
这个module还需要依赖Libraries API http://drupal.org/project/libraries 1 X/ x& H* L. t% o
- Q& M6 }2 J' j
$ Q# l: w' H1 t% K4 ?: D4 S8 i& a) B二:下载PHPMailer库 http://code.google.com/a/apache- ... iler/downloads/list,提取class.phpmailer.php和class.smtp.php这两个文件,放到drupal\sites\all\libraries\phpmailer这个文件夹下,(libraries是专门用来放一些类库的)
$ T$ ?- ^# E1 S7 }6 `% a+ T1 {, t% q. c, {. i3 q6 n
/ E) U5 Q q4 A z三:到后台module下安装PHPMailer和Libraries API这两个module,安装完成后,进入admin/config/system/phpmailer这个页面对PHPMailer做一些配置,他推荐的是gmail,上面有详细的步骤。 ( O" ` |. T6 q* q
5 G# ~2 y& }* l1 u8 E1 k4 W然后开始发邮件,可是在发送邮件的过程中发现了个令人头疼的问题,我想发送html格式的mail,尽管我修改了header中的Content-Type为text/html,可是收到的始终是内容被转了格式的邮件。原来在drupal_mail()中有个有句代码是$message = $system->format($message);(大概在L146),message被转格式了,在项目种搜索format()这个方法,搜到好几处,排除确定后,原来是调用了phpmailer.class.inc的format,在这个方法中$message['body'] = drupal_html_to_text($message['body']);就是这句将html格式转化了。 # K; \( F# X3 n
5 r+ Y, L! O/ R, {2 u$ d1 x7 e* _7 P, m这样利用smtp发送html邮件就大功告成了。在搜索项目中调用了哪处的format,也可在mail.inc的drupal_html_to_text()的这个方法中加上debug_print_backtrace()这个方法去跟踪你的代码。
+ _& p& x3 Q5 l) r; x; C- l" B
1 W8 J, u! w0 p8 r( u2 b/ A0 C. E! j% [/ W: K& X
本文选自:jhddxp,谢谢!
+ h6 {" u, ?, o }3 @" k |
|