在Mac上Rails ActionMailer问题

set*_*eth 8 ruby macos postfix-mta ruby-on-rails actionmailer

在过去的几天里,我一直在努力学习使用Rails,而且我遇到了一些我无法通过Google解决的问题.

所以我只是创建一个发送电子邮件的基本联系表单.一切似乎都在测试中正常工作,这告诉我表单正在运行,并且ActionMailer已正确实现,但是,我在配置ActionMailer时遇到了问题.我正在运行OSX 10.6.2.我有postfix运行,并已验证它正在运行使用telnet localhost 25.当我尝试使用表单时,我收到"拒绝连接"错误.

这是我目前的配置:

config.action_mailer.smtp_settings = {
  :address  => 'localhost',
  :port     => 25
}
Run Code Online (Sandbox Code Playgroud)

我想我可能需要设置,:domain但我对在这种情况下应该设置的内容感到困惑.

cor*_*rew 6

我的生活已经大约100倍了:在我的Mac上发送邮件作为我的mac上的交付方式,而不是:smtp,你可能想试试这个.在这个答案中,我假设您只是希望在Mac上发送邮件而实际上并不关心它是如何工作的.

我做的另一件事,如果我要在项目上一直连接到网络,就是将我传出的ActionMailer发起的邮件配置为通过gmail而不是我的本地mac.

ActionMailer::Base.delivery_method = :smtp

ActionMailer::Base.smtp_settings = {
:enable_starttls_auto => true,
  :address        => "smtp.gmail.com",
  :port           => 587,
  :domain         => "example.com",
  :authentication => :plain,
  :user_name  => "address@example.com",
  :password  => "secret"
}

这是针对域名的谷歌应用程序上设置的名为example.com的自定义域.您也可以创建一个Gmail帐户并通过那里发送内容.(通过将example.com的所有实例更改为gmail.com)


Jed*_*der 6

您需要启动后缀守护程序.您可以通过键入终端来判断您的端口是否已打开

telnet localhost 25
Run Code Online (Sandbox Code Playgroud)

这将尝试连接到25端口.如果postfix没有运行它就不会连接,如果是的话,点击ctl-]停止连接并"退出"退出telnet.

如果它没有连接,您需要启动后缀守护程序:

sudo launchctl start org.postfix.master
Run Code Online (Sandbox Code Playgroud)

然后尝试连接telnet.它应该连接.现在您已准备好从ActionMailer类发送电子邮件.

sudo launchctl stop org.postfix.master
Run Code Online (Sandbox Code Playgroud)

停止后缀守护程序