你买了台服务器,配置好了 Web 环境,安装了 Drupal,但是你发现 Drupal 无法发送邮件。如果你跟我们一样,花了一天时间找不到原因,并且使用的是 Linux 系统( CentOS ),可以试试下面这个方法。Drupal 默认会使用 sendmail 发送邮件,sendmail 其实是个小程序,可以运行在系统里面,你需要先确认系统里是否安装了 sendmail ,并且确定它已经启动了。
确定是不是安装了 sendmail:
service sendmail status
如果返回:
sendmail: 未被识别的服务
这说明我们的系统里面还没有安装 sendmail ,使用 yum 命令可以去安装它:
yum install sendmail
成功以后,你可以去启动 sendmail :
service sendmail start
返回:
Starting sendmail: [ OK ] Starting sm-client: [ OK ]
说明已经成功的启动了 sendmail ,sendmail 默认的位置是在:
/usr/sbin/sendmail
我用的是阿里云服务器,启动 sendmail 的时候会特别的慢,这个问题一会儿我们再去解决。先再确认一下 sendmail 是否真正运行了:
service sendmail status
返回
sendmail (pid 9436) is running... sm-client (pid 9444) is running...
这说明 sendmail 真正的运行了。现在,你的 Drupal 或者其它的应用就可以使用 sendmail 发送邮件了,不过,如果你发现在发送邮件的时候特别慢,比如在注册用户的时候,或者用户找回密码的时候,邮件可以发送成功,但是会把服务器搞崩溃,这时你需要再去编辑一下 hosts 文件:
vim /etc/hosts
这个文件里有可能已经有了一些内容,我把这个文件里的东西清空了,然后手工的加上下面这行代码:
127.0.0.1 localhost.localdomain localhost
这样应该可以解决 Drupal 发送邮件超级慢的问题。
几个提供发邮件的服务商
- http://aws.amazon.com/ses/
- http://www.mailgun.com/
- http://sendgrid.com/
- https://postmarkapp.com/
- http://sendcloud.sohu.com
评论
很有帮助, 好教程.
10 年 8 个月 以前
views 输出的node 如何根据 content access 的权限 覆写链接,views 覆写所有node链接 可以设置,但是 根据 content access 的权限 覆写链接 能给个思路么。
10 年 8 个月 以前
我觉得可以考虑覆盖 Views 使用的模板文件。
10 年 8 个月 以前
我用content access设定了各个node的权限,
然后用views提取,
把没有权限的node url重写,
我定义了views 提取title的 tpl,
如下:
<?php if (user_access("view")): ?>
<?php print $output; ?>
<?php else: ?>
<?php print $row->{$view->field['title']->field_alias};?>
<?php endif; ?>
但是只有内容作者 是正常 其他人都没有链接 包括有权限查看的,这里的if该怎么写?
10 年 8 个月 以前
希望能出mailgun等邮件服务的使用教程
10 年 1个月 以前
在国内能用这种邮件服务吗?我之前了解过几个,都不能往国内发邮件。
10 年 1个月 以前
我的服务器在国外 客户也是国外的
国内的话 有sendcloud是跟他们类似的,sohu出的
10 年 1个月 以前
哦。明白了 :)
10 年 1个月 以前