Hostmonster上配置redmine的邮件发送功能

    之前已经成功在 Hostmonster 上配置 redmine 了,还有一个重要功能没有配置上: redmine 的发送邮件通知的功能。但配置路途曲折迂回,经过两周的辗转、反复查资料和尝试,总算还是配置成功了,配完后脑中就只晃一句话:道路是曲折的,前途是光明的 ( 遇到问题不要放弃,多查多想多尝试 ) 。回头看看结果和过程中学到的一些排查问题的技巧。

 

先说结果 ,在 Hostmonster 上配置 redmine 的邮件发送功能的配置很简单,下面是 config/email.yml 配置的例子:

production:

  delivery_method: :smtp

  smtp_settings:

    address: 'mail.your-hostmonster-domain-name.com'

    port: 25

    domain: 'your-hostmonster-domain-name.com'

    authentication: :plain

    user_name: "mail-user-name@your-hostmonster-domain-name.com"

password: "mail-password"

说明: (1) 先到 Hostmonster 的控制面板上的“电子邮件帐户”中创建一个邮件用户,用户名对应上面的“ mail-user-name ”, @ 符号后面的域名对应“ your-hostmonster-domain-name.com ”,密码对应“ mail-password ”;

(2) redmine 的源码看“ domain ”这一项基本没有用,但也照样配置上吧;

(3) 端口使用 25 ,从网上资料看 26 也行 ( 不过这里没有尝试,如果 25 不行的话,可以试一下 26)

(4) address ”的配置是以“ mail.xxxx.com ”形式出现的,与一般的“ smtp.xxx.com ”是有区别的;

(5) 这个配置的环境是: ruby(1.8.7) rails(2.3.5) ,如果是这个环境 ( 或以上 ) ,不需要其它插件之类的,只需要配置 config/email.yml

(6) 参考: http://www.redmine.org/wiki/redmine/EmailConfiguration

 

过程

由于日常用 gmail 比较多,为了减少发的邮件被当垃圾处理,所以想使用 gmail smtp 服务器的形式代发邮件 ( 这样 redmine 发出的邮件看起来好像是由 gmail 发出的 ) 。但这个想法是“灾难”的开始,结果是额外学了不少东西,代价是花了不少时间。

(1)    http://www.redmine.org/wiki/redmine/EmailConfiguration 中介绍的“ GMail/Google Apps and other TLS-requiring SMTP servers ”部分,配置了 config/email.yml ,然后登陆到 redmine 里的 email notification 里点击“ send test mail ”,无论怎样修改配置,都雷打不动地提示:

"The following error occured while sending email notification: /"execution expired/".

(2)    第一种尝试:到 baidu google 搜索,查到了不计其数的文章,有很多人都问了同样的问题,后面也给了答复,但 email.yml 的配置与“ EmailConfiguration ”里的差不多,该注意的端口、 tls enable_starttls_auto 等,“ EmailConfiguration ”里的标配都有。唯一不同的是有的说要插件“ action_mailer_optional_tls ”或者直接把插件内容放到 lib 中然后修改 emvironment.rb ;分别试了上面两种方式,加上 email.yml 中各个“可疑”参数的排列组合后进行一系列的尝试工,提示还是犹如“磐石”般泰然处之,但我却黔驴技穷了。 ( 当然,如果 email.yml 参数中的用户名、密码错了,提示是验证错误之类的 )

(3)    第二种尝试:“ execution expired ”这种提示实在是让人摸不着头脑 ( 没什么提示的信息量 ) ,从而也反省一下自己以后写程序时提示得人性化一些。没办法,从提示看不出什么,只能从代码下手了 ( 还好 rails 全是能看到源码的 ) ,回头温习了一下 rails 的发邮件例子,了解到一个重要的信息: ruby(1.8.7) rails(2.3.x) 上已经集成 tls 功能了,不需要加什么插件之类的。于是,把 redmine 重新安装一遍,不带“ action_mailer_optional_tls ”插件,也不要把与这插件类似的功能加到 lib emvironment.rb 里,然后再详细配置好 email.yml ,不过可惜的是,结果还是跟之前一样糟糕。

(4)    第三种尝试:使用 redmine 发不成邮件,那先自己发一个试试呗。于是在一 linux 机器上装了 ruby rails ,然后写了个发邮件的 test 程序 ( 参考: http://edgeguides.rubyonrails.org/action_mailer_basics.html ) ,然后把下面配置放到 environment.rb 的最后:

ActionMailer::Base.smtp_settings = {

  :enable_starttls_auto => true,

  :address => "smtp.gmail.com",

  :port => 587,

  :domain => "smtp.gmail.com",

  :authentication => :plain,

  :user_name => "mail-user-name@gmail.com",

  :password => "mail-password"

}

程序很简单,只是发了一句话,但却顺利得很,一发一个准, gmail 里全部收到。

(5)    第四种尝试:在 linux 本机上同样安装 redmine ,使用其里面自带的 deliver_test(user) 方法来测试 (email.yml 与第一种尝试一样, environment.rb 不添加有关 email 的任何东西 ) ,也是随意都能够成功。这个过程刚开始很辛苦、很费时间,直到想起了这个方法:在命令行中先进入 redmine 工程,然后在命令行中输入: ruby script/console production 来加载整个 production 环境,然后先用 user = User.try_to_login(‘username’, ‘userpassword’) 获得一个用户,然后使用 Mailer.deliver_test(user) 来向 user 发送一封邮件。有了这个方法,测试轻松多了。

(6)    经过上面尝试后,很明显问题的根源是与 hostmonster 有关,而不是与配置有关。发个 ticket Hostmonster 咨询之后,回复是:“ Unfortunately, we do not allow outbound SMTP connections as you are trying to do with this script. I'm sorry for any inconvenience this may cause. ”简单地理解是: Hostmonster 不支持这种形式去使用外部的 smtp 服务器。“真相”终于大白于天下,到 Hostmonster 上申请一个邮箱 ( 可以使用 http://www.domain-name.com/webmail 去登陆这个邮箱 ) ,然后配置到 email.yml ( 不需要使用 tls) ,就一切 OK 了。

(7)    另外,如果遇到“ 550-Verification failed for xxxx@xxxx.com ”或“ 535 Incorrect authentication data ”一般是邮箱配置的用户名、密码不正确或者发送者邮箱的用户名和密码不正确产生的。

 

小结:

(1)    多查资料,多尝试、多学原理再多尝试;

(2)    使用 ruby script/about 来查看当前 rails 工程的版本环境;使用这个命令时,rails会试图去连接数据库,所以如果使用production环境,则需要使用命令: RAILS_ENV=production script/about

(3)    使用 ruby script/console production 来测试程序,使用 ruby script/server webrick -e production 来测试工程代码是否能够跑起来 ( 因为启动出问题时, Hostmonster 看不到详细的错误信息 )

(4)   Hostmonster 不支持使用外部的 smtp 服务器。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值