2009-12-10 4 views
2

Je suis un peu nouveau sur ruby ​​on rails, et j'ai lu de nombreux tutoriels à ce sujet, mais je n'arrive toujours pas à comprendre ce qui ne va pas.Comment envoyer des emails depuis ruby ​​en utilisant un compte gmail, par exemple?

je l'ai déjà mis en place le environment.rb avec les lignes suivantes en bas:

ActionMailer::Base.delivery_method = :smtp 

ActionMailer::Base.default_content_type = "text/html" 

ActionMailer::Base.smtp_settings = { 
    :address  => 'smtp.gmail.com', 
    :port   => 25, 
    :domain   => 'gmail.com', 
    :authentication => :login, 
    :user_name  => '[email protected]', 
    :password  => 'mypassword' 
} 

Ensuite, j'ai un code qui est venu avec le baseApp j'utilise, et effectue les opérations suivantes :

UserMailer.deliver_forgot_password(self) 

auto est l'objet utilisateur, qui contient l'e-mail, connexion, etc.

cette méthode (qui appartient à la classe UserMailer) a le code suivant:

def forgot_password(user) 
    setup_email(user) 
    @subject += "Forgotten password instructions" 
    #{user.password_reset_code} 
    @body[:url] = "http://#{Setting.get(:site_url)}/users/reset_password/#" 

    end 

protected 
    def setup_email(user) 
     @recipients = "#{user.email}" 
     @from  = "#{Setting.get(:support_name)} <#{Setting.get(:support_email)}>" 
     @subject  = "[#{Setting.get(:site_name)}] " 
     @sent_on  = Time.now 
     @body[:user] = user 

     # Get Settings 
     [:site_name, :company_name, :support_email, :support_name].each do |id| 
     @body[id] = Setting.get(id) 
     end 
    end 

Eh bien, les e-mails sont très bien, je les ai déjà vérifié faire lever l'inspection, mais il ne ... envoyer et il ne me jette pas une exception non plus.

Maintenant, je reçois erreur Errno :: ECONNREFUSED lorsque vous essayez d'envoyer un e-mail. Quel est le problème maintenant?

Merci, Brian

+0

Quelle version de rails utilisez-vous? – Mark

+0

mm, si je fais un clic droit sur le projet, je vois Ruby Platform: Built-in JRuby 1.2.0. Est-ce que c'est ce que tu voulais savoir? –

Répondre

1

port de Gmail devrait être 587 ou 465.

et ajouter

:tls => true, 

Avez-vous le ActionMailerTLS Gem installé?

+0

Il ne fonctionne pas non plus :( –

+0

cette question peut vous aider http://stackoverflow.com/questions/801005/successfully-installed-actionmaileroptionaltls-to-send-using-gmail – Mark

+0

Merci Mark.Je vais essayer d'installer action_mailer_tls Mon seul doute à ce sujet est que je ne reçois pas l'erreur mentionnée dans ce message Dois-je l'installer de toute façon? Peut-être que j'ai l'erreur notificateur désactivé ... –

1

La nouvelle façon de faire cela comme des rails 2.3.2 est

:enable_starttls_auto => true 

Pas besoin de plugins supplémentaires.

+0

True. Je viens de lire ça ailleurs aussi. Mais ça ne marche toujours pas. Tout ce que j'ai configuré pour cela est: - Au développement.rb: config.action_mailer.delivery_method =: smtp config.action_mailer.perform_deliveries = true config.action_mailer.smtp_settings = { : enable_starttls_auto => true, : adresse => "smtp.gmail.com", : port => 587, : domain => "domain.com", : user_name => "[email protected]", : password => "mot de passe", : authentification =>: simple } Ai-je besoin de quelque chose d'autre pour en faire travail? Je ne reçois aucune exception ... Je ne reçois tout simplement pas l'email. –

+0

Je vois cela est mis en place dans development.rb Avez-vous la ligne config.action_mailer.raise_delivery_errors = true Ceci est à false par défaut, peut-être essayer la mise à vrai et voir si l'action Mailer vous donne des erreurs de livraison. – KJF

1

Sur mon Mac, j'ai dû activer le postfix pour recevoir des emails. Peut-être que vous n'avez pas un programme de messagerie similaire allumé capable d'envoyer des emails. Qu'est-ce que c'est pour Windows 7, je ne sais pas.

+0

Je ne sais pas non plus. Je suppose que ça ne marche peut-être pas à cause de ma version de rubis. Quand je fais un clic droit sur mon projet, je vois "Ruby Platform: Built-in JRuby 1.2.0". Je peux choisir soit 1.8.6-p287 Dois-je télécharger un nouveau vesion? –

+0

Si vous pouvez voir l'email imprimé dans vos journaux, votre version de rubis ne devrait pas être le problème. Peut-être que vous avez besoin de IIS ou sendmail pour Windows, mais je ne suis pas familier avec le développement de Windows. Je ne veux pas déclencher une guerre de flammes, mais vous voudrez peut-être envisager de créer une machine virtuelle basée sur Linux et de vous y développer. Développer sur Linux ou Mac OS X est une bien meilleure expérience et il y aura plus de gens familiers avec l'environnement qui pourront vous aider dans ce genre de situations. – danengle

Questions connexes