Pregunta

¿Alguien tiene alguna información de calidad (y actualizada) sobre el envío de correo a través de Gmail utilizando Ruby's Net::SMTP?He visto varios ejemplos, la mayoría datan de 2007 a mediados de 2008 y ninguno de ellos funciona para mí.Necesito ejemplos más actuales que utilicen la versión 1.8.7 más reciente.También agradecería que la documentación no cubriera solo ejemplos simples que nadie usa realmente.

Actualmente recibo un error:

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

No estoy muy familiarizado con SSL en lo que respecta al protocolo SMTP, por lo que todo esto se me escapa.Lamentablemente, la documentación de Net::SMTP solo cubre las bases y tampoco proporciona una lista completa de los diversos contextos potenciales de OpenSSL::SSL, por lo que no puedo probar varios.

De todos modos, si alguien tiene información de calidad sobre cómo hacer que esto funcione con Gmail, sería muy apreciado.

Mejor.

¿Fue útil?

Solución

De hecho, me acabo de este trabajo. Escribió un guión rápido para probarlo.

Me estaba poniendo un error diferente de lo que estaban (que requiere STARTTLS), también me encontré con que tenía para utilizar el puerto 587 en lugar de 465.

He encontrado el truco para conseguir que funcione en un plugin de rieles que encontré. (Agilewebdevelopment.com/plugins/net_smtp_tls_support)

Si eval '' este archivo (que añade soporte TLS a la red estándar :: biblioteca SMTP):

  

http: // felicidad-es- slavery.net/wp-content/rails-plugins/smtp_add_tls_support/lib/smtp_add_tls_support.rb

a continuación, ejecute 'Net :: SMTP.enable_tls ()'

todo parece funcionar bien.

Aquí está mi 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, he descargado el archivo mencionado anteriormente en el mismo directorio y lo llamó 'smtp_tls.rb'

Espero que esto ayude!

Otros consejos

En realidad, las obras siguientes para Gmail sin un plugin o una joya, al menos con Ruby 1.9.1p376, pero buena suerte para encontrar documentación que te lo dirá:

    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 se parece a 'you@domain.com' & SuDominio probablemente puede ser lo que quiera, pero yo uso el nombre de dominio real.

¿Está conectando a smtp.gmail.com puerto 465 Estoy asumiendo? .

openssl s_client -connect smtp.gmail.com:587

CONECTADO (00000003) 8298: Error: 140770FC: rutinas SSL: SSL23_GET_SERVER_HELLO: protocolo desconocido: s23_clnt.c: 601:

El error se ve muy similar a la suya. El siguiente comando hace el trabajo:

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

Así que creo que lo que está sucediendo es que no cuenta con el apoyo STARTTLS habilitado. No estoy seguro de cómo hacerlo en Ruby comprar lo que lo supe es que el action_mailer_tls este plugin permite mediante parches Net :: SMTP. A partir de Rubí 1.8.7, Net :: SMTP tiene este soporte incorporado.

Si está utilizando Rubí <1.8.7 aquí es el parche.

También es necesario tener dos caracteres de nueva línea entre el asunto y el cuerpo del mensaje.De lo contrario, sólo se transmitirá el asunto y el cuerpo del mensaje quedará en blanco.

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 podría ayudar

y aquí están algunos caracteres más para satisfacer los requisitos de SO ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top