zoukankan      html  css  js  c++  java
  • 用 Gmail 的 SMTP 发送邮件

    不论是 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 设置不像想象中那么简单。因此决定撰文介绍一下。既然给新手看,就说详细一点吧。

    为什么要用激活邮件?

     

    因为网站可能要发送某些通知给会员,如果不要求激活,就无法验证会员在注册时填写的信箱是否属实。这个世界上还确实存在一批比较变态的人,注册时就是要填 写假的信箱,这样网站就无法将重要通知送达这些会员。如果是论坛,那么一般在有回复帖子时,都要发送通知邮件给前面发帖的人,让他们来阅读回帖。如果信箱 是假的,怎么能通知到?还有会员之间的联络,有时候也需要发送 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! 时就很不方便。

    感谢 khandu !他在 Joomla! 官方论坛发了一个帖子,介绍了一个最简单的办法,实现了不用补丁也能使用 Gmail SMTP。如上图所示,这么填写:

    邮件模式:SMTP

    寄件地址:somebody@gmail.com

    发件人名称:某某网站(论坛)

    SMTP 认证:是

    SMTP 用户名:somebody@gmail.com

    SMTP 密码:**********

    SMTP 主机:gmail-smtp-in.l.google.com

    奥妙就在最后“主机”这里!我按照上述设置,已经在 XAMPP 搭建的本地测试服务器上测试成功!(如果你测试时 Joomla! 前台提示“PHPMAILER_RECIPIENTS_FAILED”错误,不要理会,你检查一下新注册的信箱就会发现已经收到了激活邮件)

    另外注意:在“SMTP 用户名”这里,必须填写完整的邮件地址,而不只是 @ 符号前面的部分;“密码”当然填写你自己的密码。

    如果你的网站开通了 Gmail 提供的“企业邮局”服务,那么 SMTP 用户名那里也要填写完整的 e-mail 地址作为认证帐号。

    {mospagebreak_scroll title=在 SMF 中设置 Gmail SMTP及自建 SMTP&heading=在Joomla! 1.5 中设置 Gmail SMTP}

    在 SMF 中设置 Gmail 的 SMTP 服务器

    如果你也在用 SMF 论坛,那么推荐在 SMF 中设置使用 Gmail 的 SMTP 来发送激活/通知邮件。SMF 的后台提供了填写 SMTP 服务器端口的栏目,但是也没有选择 SSL 的地方。我们可以用下面的办法来实现:

    进入 SMF 后台,点击“服务器设置 -> 功能配置”,在这里填写上述设置信息。SMF 这里多了一项内容,就是“端口号”(连接埠),SSL 的端口号是 465。默认填写的 25 是针对 PHP Mail 和一般 SMTP 的。

    如上图所示,SMF 后台是这样设置 Gmail SMTP 的:

    电子邮件类型:SMTP

    SMTP 服务器:ssl://smtp.gmail.com

    SMTP 连接埠:465

    SMTP 帐号:somebody@gmail.com

    SMTP 密码:**************

    确认密码:   **************

    这里的技巧在于:直接给 SMTP 主机名称前面加上 ssl:// 协议。

    SMF 还有一个特殊地方是,在这里填写的 SMTP 帐号必须与“管理员信箱”一致。点击后台的“服务器设置 -> 核心配置”,就能找到一项“管理员电子邮件”,在这里也必须填写与邮件设置那里一样的 Gmail 帐号。

    Gmail 的 SMTP 邮件限量

    为了防止有人利用 Gmail 的免费 SMTP 服务发送大量垃圾邮件,Gmail 规定:每个帐号通过 SMTP 每天只能发给 100 个收件人(注意:不是 100 封邮件,这个限制更严格),超过这个数量就被封号24小时;如果你登录到 Gmail 的 web 界面,则每天可以发给 500 个收件人,超过这个数量也会被封号 24 小时。

    如果你的网站注册人数很多,或者论坛发帖量很大,则每天发送的激活/通知邮件很容易超过 100 封,这就违反了 Gmail 的规定,会被停用帐号 24 小说 —— 本站昨天已经经历了一次这样的处罚。

    这样来说,Gmail 的 SMTP 不能用在大型网站。如果你的网站每天发送的激活/通知邮件不超过 100,我推荐使用 Gmail SMTP;如果超过这个数量,就需要寻找其它不限量的 SMTP,或者自己搭建一个 SMTP 了 —— 大型网站都会这么做。

    自己搭建 SMTP 服务器

    本站论坛最近人气逐渐增加,每天的激活、通知邮件也很多,Gmail 的 SMTP 已经不够用了。因此 Tiger 就搭建了一个 SMTP 服务器,用的是 Postfix for FreeBSD 程序。在测试时发现两个问题,就是下面提醒里面的,目前都已经解决。

    自己搭建 SMTP 服务器的好处是:没有信件限量,或者说作为 Postmaster 你有完全的权限控制限量多少。另外,速度也很快,如果你没有开设大量帐号的话。

    借助开源的 ExtMail 软件,你还可以给你的邮件服务器创建 Web 界面,这样你就得到一个名副其实的电子邮局了。如果你想给会员权限来注册免费电邮都可以。

    最后提醒一下:

    1、如果你自己搭建的 SMTP 发送邮件时发现被拒收,很可能是因为被 spamhaus.org 列入黑名单,你可以到他们网站进行搜索。如果证实被误判为垃圾邮件发送源,就可以申诉,请求解除封锁。已经有热心网友撰写了《spamhaus的PBL申诉图解》,你可以参考一下。

    2、发往 Hotmail 的邮件会被微软服务器进行反向解析,如果解析失败就拒收。因此自己搭建 SMTP 服务器时注意必须同时做好反向解析。

    3、如果你用 Gmail 或其他要求 SSL 连接的 SMTP 服务器时,发现设置正确但是无法发出邮件,请检查一下你的网站服务器是否支持以 SSL 协议访问外部 URL —— 问问你的空间商吧。

    原文链接:http://hi.baidu.com/51webhost/blog/item/9d1cc019e0d72ef7ae5133a0.html

  • 相关阅读:
    java中的 equals 与 ==
    String类的内存分配
    SVN用命令行更换本地副本IP地址
    npoi 设置单元格格式
    net core 微服务框架 Viper 调用链路追踪
    打不死的小强 .net core 微服务 快速开发框架 Viper 限流
    net core 微服务 快速开发框架 Viper 初体验20201017
    Anno 框架 增加缓存、限流策略、事件总线、支持 thrift grpc 作为底层传输
    net core 微服务 快速开发框架
    Viper 微服务框架 编写一个hello world 插件02
  • 原文地址:https://www.cnblogs.com/dragonstreak_1/p/1853697.html
Copyright © 2011-2022 走看看