没有人有任何质量(和及时更新)使用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这将是最赞赏。
最好。
其实我刚拿到这个工作。 写了一个快速脚本来测试它。
我得到一个不同的错误比你(需要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”
希望这可以帮助!
其实下面的作品的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”&您的域大概可以是任何你喜欢的,但我用实际的域名。
你连接为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 这里是补丁。
你还需要有邮件主题和正文之间的两个换行符。 否则,只有主体将被发送,消息体将保持空白。
msg = "Subject: My Subject Goes Here\n\nMy message goes here"
https://web.archive.org/web/20110113211408/http://blog.segment7.net/articles/2009/07/08/smtp_tls-1-0-3可能帮助
这里有一些更多的字符SO满足要求...