문제

누구든지 Ruby 's Net :: SMTP를 사용하여 Gmail을 통해 메일을 보내는 것에 관한 품질 (및 최신) 정보가 있습니까? 나는 2007 년부터 2008 년 중반까지 데이트를하는 몇 가지 예를 보았지만 그중 어느 것도 저에게 도움이되지 않았습니다. 최신 1.8.7 릴리스를 사용하는 더 많은 현재 예제가 필요합니다. 문서가 아무도 실제로 사용하지 않는 간단한 예제 만 다루지 않았다면 감사합니다.

현재 오류를 받고 있습니다.

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

나는 SMTP 프로토콜과 관련하여 SSL에 대해 크게 익숙하지 않으므로 이것은 모두 나에게 손실됩니다. 불행히도 NET :: SMTP 문서는베이스 만 포함하며 다양한 잠재적 OpenSSL :: SSL 컨텍스트의 전체 목록을 제공하지 않으므로 다양한 것들을 시도 할 수 없습니다.

어쨌든, 누군가가 Gmail과 함께 작동하도록하는 것에 대한 품질 정보가 있다면 가장 감사 할 것입니다.

최고.

도움이 되었습니까?

해결책

나는 실제로이 일을했다. 테스트하기 위해 빠른 스크립트를 작성했습니다.

나는 당신과 다른 오류를 얻었습니다 (starttls가 필요). 또한 465 대신 포트 587을 사용해야한다는 것을 알았습니다.

내가 찾은 레일 플러그인에서 작동하는 트릭을 발견했습니다. (agilewebdevelopment.com/plugins/net_smtp_tls_support)

이 파일을 '평가'하는 경우 (표준 Net :: SMTP 라이브러리에 TLS 지원을 추가) :

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'라고 명명했습니다.

도움이 되었기를 바랍니다!

다른 팁

실제로 아래는 플러그인이나 보석이없는 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 기준으로 Net :: SMTP에는이 지원이 내장되어 있습니다.

루비를 사용하는 경우 <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도움이 될 수 있습니다

그리고 다음은 요구 사항을 충족시킬 수있는 더 많은 캐릭터가 있습니다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top