gpt4 book ai didi

ruby-on-rails - 在 ruby​​ on rails 3 中通过电子邮件创建订阅

转载 作者:行者123 更新时间:2023-12-04 03:47:27 27 4
gpt4 key购买 nike

我正在设计一个简单的 Rails 3 应用程序,并且有一个 post 模型

t.string :author
t.string :title
t.text :description

要实现的是,能够向订阅者发送电子邮件,即.. 将向感兴趣的读者提供一个添加其电子邮件地址的表格,以便在创建帖子时,它会向订阅者发送一封电子邮件,显示他们新帖子....谢谢,也是 Rails 的新手,请描述性强

最佳答案

高级步骤

  1. 创建表来存储电子邮件帐户
  2. 创建表单以收集电子邮件帐户
  3. 创建邮件程序以向订阅者分发电子邮件

第 1 步:创建订阅者表

rails g resource Subscriber email:string

第 2 步:创建表单

在与您要收集电子邮件的 View 对应的 Controller 操作中:

@subscriber = Subscriber.new

在您想要收集订阅者电子邮件地址的 View 中:

<% form_for(@subscriber) do |f| %>
<%= f.text_field :email %>
<%= f.submit %>
<% end %>

在你的 route :

resources :subscribers

在 app/controllers 中添加文件 subscribers_controller.rb 并添加以下内容(请注意,您需要添加额外的逻辑来解决无法保存电子邮件的情况,例如您选择对用于检查电子邮件格式有效的订阅者模型):

class SubscribersController < ApplicationController

def create
@subscriber = Subscriber.new(params[:subscriber])
@subscriber.save
redirect_to root_path
end

end

第 3 步:邮寄程序

请参阅 http://guides.rubyonrails.org/action_mailer_basics.html 上的文档

它会像下面这样......

rails g mailer SubscriptionMailer

在 mailers/subscription_mailer.rb 添加如下内容:

def send_email(email,post)    
@post = post
mail(to: email, subject: @post.title)
end

找到文件夹 app/views/subscription_mailer 并添加文件 send_email.html.erb。这是将发送给您的电子邮件订阅者的内容。

在您的 development.rb 文件中,设置邮件程序。在下面的例子中,我使用了一个名为 Mandrill 的工具:https://mandrillapp.com

  config.action_mailer.default_url_options = { :host => "localhost:3000" }

config.action_mailer.smtp_settings = {
address: "smtp.mandrillapp.com",
port: 587,
domain: "localhost:3000",
authentication: "plain",
enable_starttls_auto: true,
user_name: ENV['email_username'],
password: ENV['email_password']
}

如果您在设置 ENV 变量方面需要帮助,请查看 Figaro gem:https://github.com/laserlemon/figaro

请注意,在给定订阅者和帖子的情况下,您可以运行以下方法来发送电子邮件:

SubscriptionMailer.send_email(@subscriber,@post).deliver

我将从终端运行以下命令以确认您的邮件程序正常工作:

rails c
SubscriptionMailer.send_email("youremail@example.com",Post.last).deliver

如果您收到一封电子邮件,那么您就知道邮件程序正在工作。最后一步是编写触发电子邮件的逻辑。在这种情况下,由于您想在帖子创建后发送电子邮件,您可以在 Post 模型中进行 after_create 回调。

在 Post.rb 中:

after_create :send_email_to_subscribers

private

def send_email_to_subscribers
Subscriber.all.each do |subscriber|
SubscriptionMailer.send_email(subscriber.email,self)
end
end

关于ruby-on-rails - 在 ruby​​ on rails 3 中通过电子邮件创建订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18995002/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com