(Ruby)让Net :: SMTP与Gmail一起工作......?

hum*_*der 24 ruby smtp email-integration ruby-1.8

有没有人有关于使用Ruby的Net :: SMTP通过Gmail发送邮件的任何质量(和最新)信息?我见过几个例子 - 大部分都是从2007年到2008年中期,但没有一个适合我.我需要更多当前使用最新1.8.7版本的示例.如果文档不仅涵盖了没有人真正使用的简单示例,我也很感激.

目前我收到一个错误:

 SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol
Run Code Online (Sandbox Code Playgroud)

关于SMTP协议,我对SSL并不十分熟悉,所以这一切都在我身上丢失了.不幸的是,Net :: SMTP文档只涵盖了基础,并没有提供各种潜在的OpenSSL :: SSL上下文的完整列表,所以我不能尝试各种各样的.

无论如何,如果有任何关于如何使用Gmail的质量信息,我们将非常感激.

最好.

Dav*_*vid 49

实际上下面适用于没有插件或gem的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
Run Code Online (Sandbox Code Playgroud)

YourAccountName看起来像'you@domain.com'和YourDomain可能是你喜欢的任何东西,但我使用的是实际的域名.


Jer*_*ops 10

我其实刚刚开始工作了.写了一个快速的脚本来测试它.

我得到了一个与你不同的错误(需要STARTTLS),我还发现我必须使用端口587而不是465.

我找到了让它在我找到的Rails插件中运行的技巧.(agilewebdevelopment.com/plugins/net_smtp_tls_support)

如果你'评估'这个文件(它增加了对标准Net :: SMTP库的支持):

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

然后运行'Net :: 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
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助!