如何向所有设计用户发送邮件?

时间:2013-12-18 11:10:59

标签: ruby-on-rails ruby-on-rails-3 devise

我在我的rails应用程序上有100个设计用户,我想向他们发送电子邮件。我有SMTP详细信息,我正在尝试按照此示例http://railscasts.com/episodes/61-sending-email-revised

我的问题是我无法理解如何使其工作?

我创建了

rails g mailer newsletter single_email

但我不确定如何从那里拿走它,任何帮助都将受到高度赞赏

编辑 - 这是我到目前为止,这是正确的吗?

# app/mailers/user_mailer.rb

class UserMailer < ActionMailer::Base
  def newsletter(user)
    mail( to: user.email, subject: "Your subject")   
  end
end

# /lib/tasks/newsletter.rake

task :send_newsletter => :environment do
  User.all.each do |user|
    UserMailer.newsletter(user).deliver
  end
end

2 个答案:

答案 0 :(得分:2)

您可以为此创建一个rake任务:

# /lib/tasks/newsletter.rake

task :send_newsletter => :environment do
  User.find_each do |user|
    UserMailer.newsletter(user).deliver
  end
end

当您从命令行运行Users时,这将迭代所有single_email并从您使用生成器创建的NewsletterMailer调用rake send_newsletter

基本的邮件程序看起来像这样:

# /app/mailers/user_mailer.rb

class UserMailer < ActionMailer::Base
  default from: 'newsletter@example.com'

  def newsletter(user)
    @user = user
    mail(to: @user.email, subject: 'My newsletter')
  end
end

mail(to: @user.email, subject: 'My newsletter')将呈现的电子邮件的视图如下所示:

# app/views/user_mailer/newsletter.html.erb

<!DOCTYPE html>
<html>
  <head>
    <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
  </head>
  <body>
    <h1>Hello <%= @user.name %></h1>
    <p>more text...</p>
  </body>
</html>

此示例假设您的User模型有name - 只是为了向您显示您在邮件程序视图中有权访问@user,因为您设置了@user def newsletter(user)之前。{/ p>

答案 1 :(得分:1)

取决于您希望何时何地发送此电子邮件

def single_email(users_email)
 mail( to: users_email, subject: "Your subject")
end

现在可以从控制器或模型中调用它。还为电子邮件创建了一个HTML

 NewsletterMailer.single_email(User.all.map(&:email).join(';')).deliver