2009-11-24 6 views
23

Je suis essayer d'apprendre à propos de l'email dans les rails. Je développe quelque chose sur localhost. Est-il possible d'envoyer un email de localhost pour dire un compte de messagerie normal comme Gmail? Ai-je installé un serveur de messagerie? Je viens d'avoir une installation de rails standard en ce moment pour le développement.envoyer un email à localhost

Répondre

14

Vous pouvez configurer ActionMailer utiliser le serveur SMTP de Gmail en utilisant quelque chose comme ça dans config/environment.rb:

ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.server_settings = { 
    :address  => 'smtp.gmail.com', 
    :domain   => '<your domain>', 
    :port   => 587, 
    :user_name  => '<your gmail>', 
    :password  => '<your password>', 
    :authentication => :plain 
} 

Modifier: Si vous rencontrez des difficultés, définissez votre config pour afficher les erreurs :

ActionMailer::Base.raise_delivery_errors = true 
+0

merci, donc si je suis en train d'envoyer un e-mail de localhost (commettez pas l'expéditeur d'un compte e-mail régulière comme gmail) à une boîte aux lettres régulière comme gmail qu'est-ce que je mets dans le: domaine,: nom d'utilisateur,: mot de passe et: champs d'authentification? – conspirisi

+0

Ceci dans seulement la configuration pour quel serveur de messagerie à utiliser. L'adresse de départ, l'adresse, le sujet et ainsi de suite sont modifiés ailleurs. Voir les exemples dans la documentation pour ActionMailer (http://api.rubyonrails.org/classes/ActionMailer/Base.html) sur la façon de procéder. –

+0

pour gmail: enable_starttls_auto: vrai parfois peut-être nécessaire – Artur79

0

Vous pouvez l'envoyer de localhost, vous pouvez même définir l'expéditeur comme une «vraie» boîte aux lettres, par exemple [email protected]

Cependant, certains (ou dire la plupart) serveurs n'accepteront pas ce courrier dans le cadre de leur spam blocking strategy (impossibilité de vérifier l'identité de l'expéditeur). Cependant, dans le passé, j'ai eu quelque chose de similaire avec python qui a travaillé sur gmail.

donc bonne chance ;-)

5

Jetez un oeil à ActionMailer. En RAILS_ROOT/config/environment/, il y a un fichier pour différents environnements (développement, test, production) les paramètres configurables vont dans ces fichiers

Vous spécifiez le delivery_method comme ça,

ActionMailer::Base.delivery_method = :sendmail 

ou si vous voulez

ActionMailer::Base.delivery_method = :smtp 

Un exemple détaillé des paramètres a été publié par Mikael S

HTH

3

Si je comprends bien votre situation, vous souhaitez envoyer un e-mail depuis votre ordinateur local à l'aide d'une adresse e-mail personnalisée, telle que [email protected]été.com. Si vous avez déjà enregistré le nom de domaine de votre compte de messagerie (mycompany.com), il est très probable que la société hébergeant votre site Web dispose également d'un serveur POP/SMTP. Si c'est le cas, vous pouvez utiliser l'exemple de Mikael S et changer le paramètre d'adresse à l'adresse SMTP de votre société d'hébergement et utiliser le nom d'utilisateur/mot de passe de votre société d'hébergement.

Si vous n'avez pas enregistré votre domaine personnalisé ou n'avez pas de fournisseur d'hébergement, vous pouvez installer un serveur de messagerie gratuit sur votre ordinateur local. Si vous utilisez WindowsXP, vous pouvez ajouter le serveur de messagerie IIS en allant dans les fonctions d'ajout/suppression de programmes-> windows. Si vous utilisez Linux, vous pouvez utiliser l'un des serveurs de messagerie disponibles dans les référentiels. Une fois que vous avez installé votre serveur de messagerie local, vous utiliserez l'exemple de code de Mikael S et utiliserez 127.0.0.1 ou localhost dans le champ d'adresse. Si vous utilisez le serveur de messagerie de WindowsXP, je pense que vous n'avez pas besoin d'entrer votre nom d'utilisateur/mot de passe.

J'espère que ça vous aide.

25

Mise à jour pour les rails 4.0
Maintenant, vous avez besoin de ces code pour faire fonctionner:

# I recommend using this line to show error 
config.action_mailer.raise_delivery_errors = true 

ActionMailer::Base.smtp_settings = { 
    :address  => 'smtp.gmail.com', 
    :domain   => 'mail.google.com', 
    :port   => 587, 
    :user_name  => '[email protected]', 
    :password  => '******', 
    :authentication => :plain, 
    :enable_starttls_auto => true 
} 
+2

Et n'oubliez pas de redémarrer votre serveur rails –