(Ruby) Начало работы Net :: SMTP с Gmail & hellip ;?

Я однажды наткнулся на фрагмент кода сборки, который сказал вам, что вы были в виртуальной машине ... Я искал Google, но не смог найти оригинальную статью.

Я нашел это, хотя: Определите, работает ли ваша программа внутри виртуальной машины .

Надеюсь, что это поможет.

24
задан skaffman 24 August 2010 в 18:21
поделиться

4 ответа

На самом деле я только что заставил это работать. Написал быстрый скрипт для проверки.

У меня была другая ошибка, чем у вас (требуется STARTTLS), я также обнаружил, что мне нужно использовать порт 587 вместо 465.

Я нашел способ заставить его работать. Я нашел плагин Rails. (agilewebdevelopment.com/plugins/net_smtp_tls_support)

если вы «оцените» этот файл (он добавляет поддержку tls в стандартную библиотеку 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

очевидно, Я загрузил вышеупомянутый файл в тот же каталог и назвал его «smtp_tls.rb»

Надеюсь, это поможет!

10
ответ дан 28 November 2019 в 22:45
поделиться

Полагаю, вы подключаетесь к порту 465 smtp.gmail.com? .

openssl s_client -connect smtp.gmail.com:587

ПОДКЛЮЧЕНО (00000003) 8298: ошибка: 140770FC: подпрограммы SSL: SSL23_GET_SERVER_HELLO: неизвестный протокол: s23_clnt.c: 601:

Ошибка очень похожа на вашу. Следующая команда действительно работает:

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

Я думаю, что происходит то, что у вас не включена поддержка STARTTLS. Я не уверен, как это сделать в ruby ​​buy, но я обнаружил, что плагин action_mailer_tls позволяет это, исправляя Net :: SMTP. Начиная с Ruby 1.8.7, Net :: SMTP имеет встроенную поддержку.

Если вы используете Ruby <1.8.7 , здесь - это патч.

2
ответ дан 28 November 2019 в 22:45
поделиться

https://web.archive.org/web/20110113211408/http://blog.segment7.net/articles / 2009/07/08 / smtp_tls-1-0-3 может помочь

и вот еще несколько символов для удовлетворения требований SO ...

-1
ответ дан 28 November 2019 в 22:45
поделиться

На самом деле приведенное ниже работает для 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 выглядит (скрыто) и YourDomain, вероятно, может быть все, что угодно, но я использую настоящее доменное имя.

49
ответ дан 28 November 2019 в 22:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: