Pergunta

Alguém tem alguma qualidade (e up-to-date) informações sobre o envio de e-mail via Gmail usando Net :: SMTP de Ruby? Eu vi vários exemplos - a maioria datando de 2007 a meados de 2008 e nenhum deles funciona para mim. Eu preciso exemplos mais atuais que usam a versão mais recente 1.8.7. Eu também apreciar se a documentação não cobrem apenas exemplos simples que ninguém nunca realmente usos.

Atualmente estou recebendo um erro:

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

Eu não sou terrivelmente familiar com SSL Quanto ao protocolo SMTP, então isso é tudo perdido em mim. Infelizmente a documentação Net :: SMTP cobre apenas as bases e não fornece uma lista completa dos vários potenciais contextos OpenSSL :: SSL tanto para que eu não posso experimentar vários queridos.

De qualquer forma, se alguém tiver alguma informação de qualidade sobre começar este trabalho com o Gmail que seria mais apreciado.

Best.

Foi útil?

Solução

Na verdade, eu só tenho este trabalho. Escreveu um script rápido para testá-lo.

Eu estava ficando um erro diferente do que você estava (exigindo STARTTLS), eu também descobri que eu tinha para usar a porta 587 em vez de 465.

Eu encontrei o truque para fazê-lo funcionar em um Rails plugin que eu encontrei. (Agilewebdevelopment.com/plugins/net_smtp_tls_support)

Se você 'eval' este arquivo (ele adiciona TLS suporte para a biblioteca Net :: SMTP padrão):

http: // felicidade-é- slavery.net/wp-content/rails-plugins/smtp_add_tls_support/lib/smtp_add_tls_support.rb

, em seguida, execute 'Net :: SMTP.enable_tls ()'

tudo parece funcionar bem.

Aqui está o meu código:

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

Obviamente, eu o download do arquivo acima indicado para o mesmo diretório e nomeou-o 'smtp_tls.rb'

Espero que isso ajude!

Outras dicas

Na verdade, a seguir funciona para gmail sem um plugin ou uma jóia, pelo menos com Ruby 1.9.1p376, mas a documentação constatação de boa sorte que vou te dizer isso:

    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 olhares como 'you@domain.com' & Seu_Domínio provavelmente pode ser o que quiser, mas eu uso o nome de domínio real.

Você está se conectando a smtp.gmail.com porta 465 Estou assumindo? .

openssl s_client -connect smtp.gmail.com:587

CONECTADO (00000003) 8298: Erro: 140770FC: rotinas SSL: SSL23_GET_SERVER_HELLO: desconhecido protocolo: s23_clnt.c: 601:

O erro parece muito semelhante ao seu. O seguinte comando faz o trabalho:

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

Então, eu acho que o que está acontecendo é que você não tem suporte STARTTLS habilitado. Não estou certo de como fazê-lo em ruby ??comprar o que eu consegui descobrir é que os action_mailer_tls plugin permite que este remendando Net :: SMTP. Como do Ruby 1.8.7, Net :: SMTP tem esse suporte built-in.

Se você estiver usando Ruby <1.8.7 aqui é o patch.

Você também precisa ter dois caracteres de nova linha entre o assunto eo corpo da mensagem. Caso contrário, apenas o assunto será transmitido, eo corpo da mensagem vai ser deixado em branco.

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 poderia ajudar

e aqui estão mais alguns personagens para Satisfazer requisitos assim ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top