8

过去几天我一直在学习使用 Rails,但遇到了一些我无法通过 Google 解决的问题。

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

这是我目前的配置:

config.action_mailer.smtp_settings = {
  :address  => 'localhost',
  :port     => 25
}

我想我可能需要设置:domain,但我对在这种情况下应该设置什么感到有点困惑。

4

5 回答 5

6

我的生活在我的 mac 上运行 :sendmail 作为我的 mac 上的一种交付方式比 :smtp 轻松了大约 100 倍,你可能想尝试一下。在这个答案中,我假设您只想在 Mac 上发送邮件,而不关心它是如何工作的。

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

ActionMailer::Base.delivery_method = :smtp

ActionMailer::Base.smtp_settings = {
:enable_starttls_auto => 真,
  :address => "smtp.gmail.com",
  :端口=> 587,
  :domain => "example.com",
  :authentication => :plain,
  :user_name => "address@example.com",
  :密码=>“秘密”
}

这适用于名为 example.com 的自定义域,该域在域的谷歌应用程序上设置。您也可以创建一个 gmail 帐户并通过那里发送东西。(通过将 example.com 的所有实例更改为 gmail.com)

于 2010-01-29T03:07:25.390 回答
6

您需要启动 postfix 守护进程。您可以通过输入终端来判断您的端口是否打开

telnet localhost 25

它将尝试连接到 25 端口。如果 postfix 没有运行,它不会连接,如果运行,点击 ctl-] 停止连接并“退出”退出 telnet。

如果没有连接,则需要启动 postfix 守护进程:

sudo launchctl start org.postfix.master

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

sudo launchctl stop org.postfix.master

停止后缀守护进程

于 2010-03-29T15:10:59.563 回答
1

我按照本指南进行操作,一切正常。主要是:

sudo postfix start

然后

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
   :address => "localhost",
   :port => 25
}
于 2013-04-04T01:05:44.863 回答
0

如果您将“127.0.0.1”替换为“localhost”以查看这是 IPv4 与 IPv6 的问题还是解析器的问题,它是否有效?

于 2009-12-21T21:18:28.587 回答
0

开发时发送和验证邮件的另一种好方法是在此处输入链接描述

从他们的网站引用:

MailCatcher 运行一个超级简单的 SMTP 服务器,它捕获发送给它的任何消息以显示在 Web 界面中。运行 mailcatcher,将您最喜欢的应用程序设置为发送到smtp://localhost:1025而不是默认的 SMTP 服务器,然后查看http://localhost:1080到目前为止已到达的邮件。

它拦截所有收件人的邮件,因此可以很容易地在一个地方检查所有邮件。

于 2013-04-09T11:11:52.397 回答