Question

Quelqu'un at-il la qualité (et la mise à jour) des informations concernant l'envoi de courrier via Gmail en utilisant le Net :: SMTP de Ruby? Je l'ai vu plusieurs exemples - la plupart datant de 2007 à la mi-2008 et aucun d'entre eux travaillent pour moi. J'ai besoin des exemples plus courants qui utilisent la plus récente version 1.8.7. Je voudrais aussi apprécier si la documentation ne couvre pas seulement des exemples simples que personne n'a jamais utilise vraiment.

Actuellement, je reçois une erreur:

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

Je ne suis pas terriblement familier avec SSL en ce qui concerne le protocole SMTP, donc tout cela est perdu pour moi. Malheureusement, la documentation Net :: SMTP ne couvre que les bases et ne fournit pas une liste complète des différents OpenSSL potentiel :: contextes SSL soit donc je ne peux pas essayer plusieurs autres.

Quoi qu'il en soit, si quelqu'un a des informations de qualité sur l'obtention de ce qu'il fonctionne avec Gmail, il serait le plus apprécié.

Best.

Était-ce utile?

La solution

En fait, je viens de recevoir ce travail. A écrit un script rapide pour le tester.

Je recevais une autre erreur que vous (ce qui nécessite STARTTLS), j'ai aussi trouvé que je devais utiliser le port 587 au lieu de 465.

J'ai trouvé le truc pour le faire fonctionner dans un plugin Rails j'ai trouvé. (Agilewebdevelopment.com/plugins/net_smtp_tls_support)

si vous eval 'ce fichier (il ajoute le support de tls au Net :: norme bibliothèque SMTP):

  

http: // bonheur est- slavery.net/wp-content/rails-plugins/smtp_add_tls_support/lib/smtp_add_tls_support.rb

puis exécutez Net :: SMTP.enable_tls ()

tout semble bien fonctionner.

Voici mon code:

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

De toute évidence, j'ai téléchargé le fichier mentionné ci-dessus dans le même répertoire et l'a appelé « smtp_tls.rb »

Hope this helps!

Autres conseils

En fait, les travaux ci-dessous pour gmail sans plugin ou un bijou, au moins avec Ruby 1.9.1p376, mais bonne chance pour trouver la documentation qui va vous dire ceci:

    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 ressemble « you@domain.com » & VotreDomaine peut probablement tout ce que vous voulez, mais j'utiliser le nom de domaine.

Êtes-vous connectez à smtp.gmail.com port 465 je suppose? .

openssl s_client -connect smtp.gmail.com:587

connected (00000003) 8298: Erreur: 140770FC: routines SSL: SSL23_GET_SERVER_HELLO: protocole inconnu: s23_clnt.c: 601:

L'erreur semble très semblable à la vôtre. La commande suivante fonctionne:

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

Je pense donc que ce qui se passe est que vous n'avez pas de support STARTTLS activé. Je ne sais pas comment le faire en Ruby acheter ce que je ne découvre que le plugin action_mailer_tls le permet par rapiéçage Net :: SMTP. A partir de Ruby 1.8.7, Net :: SMTP a cette prise en charge intégrée.

Si vous utilisez Ruby <1.8.7 ici est le patch.

Vous devez aussi avoir deux caractères entre le sujet de saut de ligne et le corps du message. Dans le cas contraire, seul le sujet sera transmis, et le corps du message sera laissé vide.

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 pourrait aider

et voici quelques caractères pour satisfaire les exigences SO ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top