(红宝石)获得的Net :: SMTP与Gmail的工作...?((Ruby) Getting Ne

2019-06-26 19:38发布

没有人有任何质量(和及时更新)使用Ruby的Net :: SMTP关于通过Gmail发送邮件的信息? 我见过几个例子 - 大多数的历史可以追溯到2007年至2008年中期,并没有一个为我工作。 我需要使用最新的1.8.7版本更多的电流的例子。 我也很想知道在文档中没有只涵盖,没有人真正使用简单的例子。

目前,我收到一个错误:

 SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol

我并不十分熟悉SSL至于SMTP协议,所以这是所有失去我。 不幸的是,网:: SMTP文档只覆盖了基础,并且不提供的各种潜在的OpenSSL :: SSL上下文的完整列表,或者,所以我不能尝试各种的。

无论如何,如果任何人有得到这个任何质量信息使用Gmail这将是最赞赏。

最好。

Answer 1:

其实我刚拿到这个工作。 写了一个快速脚本来测试它。

我得到一个不同的错误比你(需要STARTTLS),我也发现我不得不使用端口587,而不是465。

我发现的手段来得到它在Rails插件我找到了工作。 (agilewebdevelopment.com/plugins/net_smtp_tls_support)

如果你EVAL“这个文件(将其添加到标准的Net :: SMTP库TLS支持):

http://happiness-is-slavery.net/wp-content/rails-plugins/smtp_add_tls_support/lib/smtp_add_tls_support.rb

然后运行 ​​'净:: SMTP.enable_tls()'

一切似乎很好地工作。

这里是我的代码:

require 'rubygems'
require 'net/smtp'

eval File.read("smtp_tls.rb")
Net::SMTP.enable_tls() 
FROM_EMAIL = "REMOVED"
PASSWORD = "REMOVED"
TO_EMAIL = "REMOVED"

msgstr = <<END_OF_MESSAGE
From: Your Name <#{FROM_EMAIL}>
To: my phone <#{TO_EMAIL}>
Subject: text message
Date: Sat, 23 Jun 2001 16:26:43 +0900
Message-Id: <unique.message.id.string@example.com>

This is a test message.
END_OF_MESSAGE

Net::SMTP.start('smtp.gmail.com', 587, 'gmail.com',
                      FROM_EMAIL, PASSWORD, :plain) do |smtp|
  smtp.send_message msgstr, FROM_EMAIL, TO_EMAIL

end

很显然,我下载了上述文件到同一个目录并将其命名为“smtp_tls.rb”

希望这可以帮助!



Answer 2:

其实下面的作品的Gmail无需插件或宝石,至少使用Ruby 1.9.1p376,但好运气找到的文件是会告诉你的:

    require 'net/smtp'

    msg = "Subject: Hi There!\n\nThis works, and this part is in the body."
    smtp = Net::SMTP.new 'smtp.gmail.com', 587
    smtp.enable_starttls
    smtp.start(YourDomain, YourAccountName, YourPassword, :login) do
      smtp.send_message(msg, FromAddress, ToAddress)
    end

YourAccountName看起来像“you@domain.com”&您的域大概可以是任何你喜欢的,但我用实际的域名。



Answer 3:

你连接为smtp.gmail.com端口465我假设? 。

openssl s_client -connect smtp.gmail.com:587

CONNECTED(00000003)8298:错误:140770FC:SSL例程:SSL23_GET_SERVER_HELLO:未知协议:s23_clnt.c:601:

错误看起来非常相似,你的。 下面的命令做的工作:

 openssl s_client  -starttls smtp -connect smtp.gmail.com:587

因此,我认为正在发生的事情是,你没有启用STARTTLS支持你。 我不知道如何做到这一点的红宝石买什么我没发现的是,action_mailer_tls插件允许这种通过修补的Net :: SMTP。 随着Ruby 1.8.7,网:: SMTP有这种支持内置。

如果您在使用Ruby <1.8.7 这里是补丁。



Answer 4:

你还需要有邮件主题和正文之间的两个换行符。 否则,只有主体将被发送,消息体将保持空白。

msg = "Subject: My Subject Goes Here\n\nMy message goes here"


Answer 5:

https://web.archive.org/web/20110113211408/http://blog.segment7.net/articles/2009/07/08/smtp_tls-1-0-3可能帮助

这里有一些更多的字符SO满足要求...



文章来源: (Ruby) Getting Net::SMTP working with Gmail…?