在开发模式下从Rails 3发送电子邮件,离线?

时间:2011-03-11 00:02:00

标签: linux ruby-on-rails-3 macos email

我正在开发一个具有电子邮件功能的应用程序,我想在本地发送电子邮件给自己(因为,我可以完全断开我的开发机器与互联网的连接,并且仍然可以发送和接收这些测试电子邮件,我的电脑)。

我想Rails应用程序发送到Mac OS X的内置Linux CLI mail程序,但我不知道如何设置它。

我想这样做,所以我可以向自己发送无限数量的测试电子邮件,而不必担心将自己锁定在GMail帐户上或烧毁Sendgrid等人的免费信用,或者等待消息制作一个往返一些服务器等等。

有人帮我这个吗?

3 个答案:

答案 0 :(得分:11)

就是这样! MockSMTP(对于OS X,至少)


更新:这可以说更好:MailCatcher。由于它是基于Ruby / Web的,它与平台无关,并且不需要为桌面软件支付许可费。此外,如果您将其与Google Chrome一起使用,它会在新邮件到达时使用WebSockets进行实时更新!酷!

答案 1 :(得分:4)

使用MailCatcher。它是一个在本地服务器上运行的gem(localhost:1080),并在浏览器呈现的模拟电子邮件客户端中显示来自Rails应用程序的外发电子邮件。

$ gem install mailcatcher
$ mailcatcher
  1. 转到http://localhost:1080/
  2. 通过smtp:// localhost:1025
  3. 发送邮件

答案 2 :(得分:3)

虽然我自己不运行OS X,但我确实使用OS Xers,我们都在开发中使用sendmail。您需要做的就是为您的开发环境配置它。

config/environments/development.rb

AppName::Application.configure do

  # …

  config.action_mailer.delivery_method = :sendmail
  config.action_mailer.sendmail_settings = {
    :location => '/usr/sbin/sendmail',
    :arguments => '-i -t'
  }

end

然后在您的邮件程序中,您可以添加一个私有方法,以确定如果您担心不小心通过电子邮件发送用户/随机电子邮件地址,将向谁发送电子邮件:

class UserMailer < ActionMailer
  default :from => 'from.email@example.com'

  def welcome(user)
    @user = user
    mail(
      :subject => "Hello World",
      :to => recipient(@user.email)
    )
  end

private

  def recipient(email_address)
    return 'developer.email@example.com' if Rails.env.development?
    email_address
  end

end