Traductions de cette page?:

Mailers

Action Mailer

Action Mailer est un framework utilisé pour envoyer et recevoir des emails dans vos applications Ruby on Rails. Action Mailer utilise des concepts familiers - modèles et vues - pour gérer les messages.

Création d'un Mailer

Pour commecer, créons un nouveau modèle pour un mailer (“gestionnaire de courriers”).

$ script/generate mailer confirmation

Cela génère un nouveau modèle nommé confirmation. Dans ce modèle, des méthodes correspondantes à chaque email peuvent être définies, et dans chaque méthode, les attributs d'un message. Par exemple voici une méthode d'email typique:

# /app/models/confirmation.rb
def thanks(email, name)
    recipients email
    from "no-reply@your_rails_app.com"
    subject "Thanks for signing up!"
    sent_on Time.now
    body :name => name
end

Si vous devez passer des variables dans la vue du mailer, utiliser des symboles. Dans notre exemple, la valeur de la variable name sera accessible dans la vue à travers la variable d'instance @name.

Les pièces jointes sont faciles à ajouter. Dans le modèle, utilisez simplement la méthode attachment.

# /app/models/confirmation.rb
def thanks(email, name)
    recipients email
    from "no-reply@your_rails_app.com"
    subject "Thanks for signing up!"
    sent_on Time.now
    body :name => name
 
    attachment :content_type => "application/pdf", :body => File.read("path.to.pdf")
end
  • Faîtes bien attention de remplacer application/pdf avec le type MIME correspondant au fichier attaché.
  • De nombeux autres attributs peuvent être configurés : reportez-vous à la documentation de l'API Action Mailer pour plus d'information.

Lors de la création d'un modèle mailer, un nouveau répertoire est créé dans ./views. Le mailer utilise en effet des vues pour créer le contenu de vos emails et chaque méthode du modèle mailer doit avoir une vue correspondante.

# /views/confirmation/thanks.text.html.erb
Hello <%= @name %>,
Your account has been created.

Envoyer l'email est également trivial.

Confirmation.deliver_thanks("recpient@host", "John")

Cependant avant de pouvoir envoyer des emails, Action Mailer doit savoir comment l'envoyer et doit donc être configuré.

Configuration d'Action Mailer

Action Mailer peut être configuré pour envoyer des emails de différentes façons, avec Sendmail ou SMTP par exemple.

Sendmail

Configurer Action Mailer pour envoyer des emails avec Sendmail est très simple. Créez d'abord un nouveau fichier dans ./config/initializers appelé mailer.rb.

# /config/initializers/mailer.rb
ActionMailer::Base.delivery_method = :sendmail

Par défaut, Action Mailer s'attend à trouver Sendmail dans /usr/sbin/sendmail. Si ce n'est pas la localisation de Sendmail, ou si vous voulez spécifier d'autres paramètres, vous pouvez également le faire :

# /config/initializers/mailer.rb
ActionMailer::Base.delivery_method = :sendmail
ActionMailer::Base.sendmail_settings = {
  :location => "path/to/sendmail",
  :arguments => "-i"
}

SMTP

L'envoi d'emails à travers SMTP est tout aussi simple. Créez également un nouveau fichier mailer.rb dans ./config/intializers. Il s'agit de configurer Action Mailer pour qu'il puisse parler au serveur de messagerie.

# /config/initializers/mailer.rb
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
  :address        => 'smtp.example.com',
  :port           => 25,
  :domain         => 'your.email.server',
  :authentication => :login,
  :user_name      => 'user',
  :password       => 'password'
}

Ressources complémentaires

 
fr/howtos/mailers.txt · Dernière modification: 2009/03/01 07:23 par josrozen
 
Recent changes RSS feed Creative Commons License