2009-12-21 66 views
8

最近几天我一直在学习如何使用Rails,并且遇到了一些我无法用Google解决的问题。Mac上的Rails ActionMailer问题

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

这是我目前的配置:

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

我想我可能需要设置:domain但我什么应该在这种情况下被设置为那种迷茫。

回答

6

我的生活已经大致100x运行更容易:我的mac上的sendmail作为我的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 => "[email protected]", 
    :password => "secret" 
}

这是一个名为example.com的自定义域,在域名的谷歌应用上设置。你也可以创建一个Gmail账户并通过它发送信息。 (通过将example.com的所有实例更改为gmail.com)

0

如果将'127.0.0.1'替换为'localhost',看看这是IPv4还是IPv6还是解决问题?

+0

嗯,没有没有工作。 – seth 2009-12-21 21:48:03

+0

如果“netstat -na | grep LISTEN”的输出显示“tcp4 0 0 * .25 *。* LISTEN”,那么您应该获得连接。如果显示“:: 1.25”,则可能处于IPv6模式。如果您有任何类型的本地防火墙,包括Little Snitch,则可能会阻止您的通话。唯一可以确定的方法是直接尝试从Ruby进行连接,例如通过单元测试。 – tadman 2009-12-22 16:49:41

6

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

telnet localhost 25 

它会尝试连接到25端口。它不会连接,如果后缀没有运行,如果它,打ctl-]停止连接和'退出'退出telnet。

如果没有连接,则需要启动后缀守护:

sudo launchctl start org.postfix.master 

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

sudo launchctl stop org.postfix.master 

停止后缀守护

1

我跟着this guide和一切工作正常。主要是:

sudo postfix start 

然后

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    :address => "localhost", 
    :port => 25 
} 
0

发送和发展时使用enter link description here验证邮件的另一个伟大的方式。从他们的网站

报价:

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

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