Ghost配置Gmail邮箱

Google的不少产品现在都有把人套牢的现象, 以至于我们可以最大限度的容忍他们产品的各种"特性". 比如不知何时开始, Gmail通过SMTP发送邮件, 会在客户端上提示Invalid login.

当我们直接在Ghost的config.js里设置

mail: {  
    transport: 'SMTP',
    options: {
        service: 'Gmail',
        auth: {
            user: 'welcome@blackglory.me',
            pass: 'AVeryComplexPassword'
        }
    }
}

点击后台的SEND按钮时, 就会直接报错:

AuthError: Invalid login - 534-5.7.14 Please log in via your web browser and then try again. Learn more at https://support.google.com/mail/answer/78754

直接使用Ghost依赖的nodemailer模块发送邮件时, 也会得到一样的AuthError: Invalid login错误.

解决这个问题有两个方法, 一个是使用Google认为更为安全XOAuth2协议进行登录, 另一个则是在账户设置里"允许不够安全的应用访问您的帐户". 第一个方法虽然更现代也更安全, 但我们如果在config.js这样的伪配置文件里添加一大段关于XOAuth2 token获取的代码, 想想也不合适, 第一种方法我们可能只能等Ghost开放App扩展支持后才能优雅的实现(我相信到那时候也依然优雅不起来), 于是我们采用不太安全的第二种方法.

第二种方法操作起来非常简单, 先登录你的Gmail账户, 然后访问https://www.google.com/settings/security/lesssecureapps, 如图将"不够安全的应用访问权限"设置为"启用".

之后, nodemailer就可以通过SMTP来发送Gmail邮件了, Ghost的测试邮件也就能够正常发送了.

这个方案可能存在一个副作用, 就是有人在恶意爆破你的Gmail密码时, 你设置的SMTP也同样会因为多次尝试登录失败而无法登录. 如果你像我一样使用的是Google Apps for Work的企业邮箱, 并且想要让Ghost也用上你的企业邮箱来发送邮件, 或许更换邮箱服务才是更好的解决方案.