不论是 Joomla! 1.0 还是 Joomla! 1.5,在安装之后,都默认已设定使用 PHP Mail 功能来发送激活/通知邮件。在“邮件设置”那里,还有两个选项就是:Send Mail 和 SMTP。在大多数情况下,PHP Mail 能够满足需要,因此也很少有人专门关注这个问题。
不过,有时候偶尔会出现用 PHP Mail 或 Send Mail 发送不出邮件的情况。这可能是由于某些邮件服务器会把这两种方式发出的邮件认定为垃圾邮件而拒收。例如,本站一直使用 PHP Mail 发送注册后的激活邮件,发件人信箱填写的是 Gmail 的帐号,但是 Hotmail 服务器认为 Gmail 的邮件应该由 Gmail 服务器发出,而不应该从 PHP Mail 发过来,因此统统拒绝。这就造成了很多人填写 Hotmail 帐号来注册本站会员时没有收到激活邮件的尴尬局面。
这几天我在尝试改为 SMTP 方式时,才发现 Gmail 的 SMTP 设置不像想象中那么简单。因此决定撰文介绍一下。既然给新手看,就说详细一点吧。
Mail settings on Joomla! 1.5 为什么要用激活邮件? 因为网站可能要发送某些通知给会员,如果不要求激活,就无法验证会员在注册时填写的信箱是否属实。这个世界上还确实存在一批比较变态的人,注册时就是要填写假的信箱,这样网站就无法将重要通知送达这些会员。如果是论坛,那么一般在有回复帖子时,都要发送通知邮件给前面发帖的人,让他们来阅读回帖。如果信箱是假的,怎么能通知到?还有会员之间的联络,有时候也需要发送 e-mail。
因此,要求会员在注册时提供有效 e-mail 是非常重要的,而确定电邮地址是否有效的最佳手段就是发送激活邮件。只有当会员点击激活邮件中的激活链接之后,才能完成注册。如果他提供的信箱是假的,那么就永远收不到激活邮件。
为什么要用 SMTP 发送激活邮件? 前面说了,PHP Mail 和 Send Mail 也能发送邮件,但是有时候会被拒绝。因此建议使用 SMTP 方式。现在大多数 SMTP 服务器都要要求发送者进行身份认证(SMTP Authentication),这样发出去的邮件中就包含了认证信息,接收方的服务器就认为这封邮件的发件人身份比较可靠,就乐于接受邮件。这就好比在淘宝网上商店的实名认证一样,多了一种认证,就提高了一些可信度。
为什么要用 Gmail 的 SMTP 服务器? 一般的网站都不会自己建 SMTP 服务器,毕竟有些麻烦。而且也不是随便建一个 SMTP 服务器就能得到其它邮件服务器的认可。例如:你购买的网站空间是与其它网站共享一个 IP 地址(动态 IP),这样即使你建一个 SMTP 服务器,也很容易被其它邮件服务器认为不可靠。这就好比一个没有自己办公地点的公司,与拥有大面积厂房或者写字楼的公司相比,哪个更可靠?这种动态 IP 的 SMTP 服务器很容易被认为是“垃圾邮件发送者”。例如,spamhaus.org 这个网站就很容易将你的 SMTP “私服”列入黑名单,很多邮件服务器会到这个名单上核对,如果发现来信的 IP 已列入 spamhaus 黑名单,你的邮件就会被拒收。
举例来说,与你共享 IP 的其它某个网站自己建了 SMTP 服务器,发送了恶意邮件,被接收方标记为“垃圾邮件”并提交给 spamhaus,那么这个 IP 上所有的网站都受牵连。你建的 SMTP 服务器一样被拒绝,因为 spamhaus 名单上只写 IP 。
因此,我建议使用其它免费邮件商提供的 SMTP 服务。在这么多免费邮件中,我推荐使用 Gmail 的 SMTP 服务。
Gmail 帐号不仅是一个邮件帐号,它更是“Google 帐号”。拥有了 Gmail 帐号,就能登录Google 的网站流量分析系统、Google Group、Gtalk 即时通讯工具、Google Code、Google Calendar 等等在线服务。你就相当于拥有了一个使用范围很广的 Passport 通行证。
单就邮件功能来说,Gmail 也是非常不错的。默认 6GB 空间,强大的邮件搜索功能,使得你几乎不用删除邮件。同一主题的邮件往来以会话(Thread)形式叠联显示,也是一大创举。它还提供了免费的 POP3 和 SMTP 服务,方便用户通过 Outlook Express 等邮件客户端软件收发邮件。
我认为 Gmail 邮件帐号就是想要建站的网管应该必备的,这一点我在《安装Joomla之前的准备工作》一文中也提到了。在此也顺便提一下 Hotmail,以前 hotmail 也是允许通过 OE 来收发邮件(IMAP),后来竟然取消了!也就是说,Hotmail 根本没有免费 SMTP 服务了。我就是在那时抛弃了 hotmail 转用 Gmail 。
怎样设置 Gmail 的 SMTP ? 首先要在 Gmail 的 Web 界面上进入“设置”,启用 SMTP 和 POP3 服务。
如果你要在 OE 上面使用 Gmail 的 SMTP,可以参考 Gmail 的帮助页面来设置。但是在 Joomla! 的邮件设置中,这样填写是行不通的。我也是在失败之后经过搜索才找到一个正确方法。
一般我们都在“SMTP 主机”这里填写 smtp.***.com ,星号代表 SMTP 服务器的域名。但是 Gmail 很特殊!因为它的认证是通过 SSL 协议访问的,而 Joomla! 没有提供 SSL 验证的选项。曾经有人在论坛发了一个 Gmail SSL 补丁,以便在上面的表单上增加一项“SMTP安全: SSL”。但是,这个补丁会修改 Joomla! 1.5 的核心文件,我认为不太好—— 当你下次升级 Joomla! 时就很不方便。
setting SMTP for Gmail on Joomla! 1.5 感谢 khandu !他在 Joomla! 官方论坛发了一个帖子,介绍了一个最简单的办法,实现了不用补丁也能使用 Gmail SMTP。如上图所示,这么填写:
邮件模式:SMTP
寄件地址:
发件人名称:某某网站(论坛)
SMTP 认证:是
SMTP 用户名:
SMTP 密码:**********
SMTP 主机:gmail-smtp-in.l.google.com
奥妙就在最后“主机”这里!我按照上述设置,已经在 XAMPP 搭建的本地测试服务器上测试成功!(如果你测试时 Joomla! 前台提示“PHPMAILER_RECIPIENTS_FAILED”错误,不要理会,你检查一下新注册的信箱就会发现已经收到了激活邮件)
另外注意:在“SMTP 用户名”这里,必须填写完整的邮件地址,而不只是 @ 符号前面的部分;“密码”当然填写你自己的密码。
如果你的网站开通了 Gmail 提供的“企业邮局”服务,那么 SMTP 用户名那里也要填写完整的 e-mail 地址作为认证帐号。