`
andrew.yulong
  • 浏览: 171642 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用rails收发邮件

阅读更多

第一步
    在environment.rb 加上

require 'smtp_tls'    //引用libsmtp_tls.rb
ActionMailer::Base.delivery_method = :smtp     //使用smtp发送邮件

ActionMailer::Base.default_charset 
= "UTF-8"       //指定发送邮件时使用的字符集

ActionMailer::Base.server_settings 
= {
:address 
=> "smtp.gmail.com",           //使用的邮件服务器
:port => 587,                                            //邮件服务器的端口号
:domain => "xxx.com",                           //暂时忽略
:authentication => :login,                       //不是很清楚,照着写
:user_name => "long0428",                  //使用邮件服务器的帐号(这里是google,所以时goole邮箱的帐号)
:password => "63345133",                     //使用邮件服务器的密码(这里是google,所以时goole邮箱的密码)
//注意:  这里我只是指定了邮件服务器,不是说我指定了google的邮件服务器,就非要使用google的邮箱发送邮件,也可以使用别的邮箱通过google的邮件服务器发送
}

到这一步我们的邮件就差不多配好了!开始第二步,创建一个OrderMailser的模型

 
class OrderMailer < ActionMailer::Base     //一定要继承ActionMailer::Base

  def confirm(sent_at 
= Time.now)                       
    @subject    
= 'helloWorld'                            //主题
    @body       = {'name' => 'dahsjkdh'}          //'name'是变量名,在confirm.rhtml里面声明
                                                                                如果
confirm.rhtml里面没有变量可以不需要@body这个参数
    @recipients = 'long0428@gmail.com'     //接受人地址
    @from       = 'liverpool_long@tom.com'    //发送人地址
    @sent_on    = sent_at                                  //按时间发送sent_at = Time.now指明现在发送
    @headers    = {}                                            //用于指定头信息
  end

end

先别着急,我们现在来完成action   

  def send_mail
    OrderMailer.deliver_confirm()     
//deliver_confirm(这里的confirm是模型中的confirm方法,deliver是固                                                                                    定的写法)
    render :text=> "scuuess!"
  end

现在来建一个rhtml,记住rhtml的名字也需要时confirm(action,模型,rhtml都是同步的)

HelloWorld
            这是第一次发送那个邮件!

最后别忘了,我们在lib文件夹上加上个libsmtp_tls.rb文件

require "openssl"
require 
"net/smtp"

Net::SMTP.class_eval 
do
  
private
  def do_start(helodomain, user, secret, authtype)
    raise IOError, 
'SMTP session already started' if @started
    check_auth_args user, secret, authtype 
if user or secret

    sock 
= timeout(@open_timeout) { TCPSocket.open(@address, @port) }
    @socket 
= Net::InternetMessageIO.new(sock)
    @socket.read_timeout 
= 60 #@read_timeout
    @socket.debug_output 
= STDERR #@debug_output

    check_response(critical { recv_response() })
    do_helo(helodomain)

    raise 
'openssl library not installed' unless defined?(OpenSSL)
    starttls
    ssl 
= OpenSSL::SSL::SSLSocket.new(sock)
    ssl.sync_close 
= true
    ssl.connect
    @socket 
= Net::InternetMessageIO.new(ssl)
    @socket.read_timeout 
= 60 #@read_timeout
    @socket.debug_output 
= STDERR #@debug_output
    do_helo(helodomain)

    authenticate user, secret, authtype 
if user
    @started 
= true
  ensure
    unless @started
      # authentication failed, cancel connection.
        @socket.close 
if not @started and @socket and not @socket.closed?
      @socket 
= nil
    end
  end

  def do_helo(helodomain)
     begin
      
if @esmtp
        ehlo helodomain
      
else
        helo helodomain
      end
    rescue Net::ProtocolError
      
if @esmtp
        @esmtp 
= false
        @error_occured 
= false
        retry
      end
      raise
    end
  end

  def starttls
    getok(
'STARTTLS')
  end

  def quit
    begin
      getok(
'QUIT')
    rescue EOFError
    end
  end
end
ok,大家现在可以发送邮件了.输入地址htto://localhost:3000/controllerName/send_mail,rails就会把confirm.rhtml的内容发送到邮箱

分享到:
评论

相关推荐

    maily, 在浏览器中,Rails 引擎预览电子邮件.zip

    maily, 在浏览器中,Rails 引擎预览电子邮件 Maily Maily是用于管理。测试和浏览应用程序所有电子邮件模板的...Maily会自动接收你所有的电子邮件,并让它们从一种仪表。插件功能:可以挂载引擎浏览器中的可视化预览

    简化在Rails中接收电子邮件-Ruby开发

    Griddler在Rails应用程序中接收电子邮件Griddler是一个Rails引擎,为将传入电子邮件转换为HTTP POST请求的服务提供端点。 它解析这些POST并传递已构建的电子邮件objec Griddler在Rails应用程序中接收电子邮件...

    Ruby-Griddler在Rails中简化接收电子邮件

    总结来说,Ruby-Griddler是Rails应用处理电子邮件的强大工具,它简化了邮件接收和解析的过程,使开发者能够更专注于构建应用程序的核心功能。通过使用Griddler,你可以轻松地集成邮件通知、用户反馈或其他基于邮件的...

    rails本地安装包完整版

    它提供了一个抽象层,可以方便地创建、发送和接收邮件,同时处理SMTP服务器的配置和其他邮件相关的设置。 4. **activeresource-2.1.0.gem**:ActiveResource是Rails用于处理RESTful服务的组件。它允许Rails应用作为...

    rails 邮件支持

    在这个例子中,`default from:` 设置了默认的发件人地址,而`welcome_email`方法接收一个`user`参数,用于定制邮件内容。`mail`方法定义了收件人和邮件主题。 接下来,我们需要在视图层(views)创建对应的模板文件...

    Beginning Rails 4

    本章讲解了如何利用 Rails 内置的邮件处理功能来发送和接收电子邮件,这对于构建实际的 Web 应用程序非常重要。 - **邮件配置**:设置邮件服务器的信息。 - **编写邮件模板**:使用视图模板来生成邮件内容。 - **...

    Ruby on Rails 指南 v5.0.1 中文版

    - **接收电子邮件**:说明如何配置应用接收电子邮件。 - **ActionMailer回调**:介绍ActionMailer中的回调机制。 - **使用ActionMailer辅助方法**:展示如何使用辅助方法简化邮件的生成。 - **配置ActionMailer**:...

    rails-beginner-s-guide

    本书首先介绍了Rails框架的基本概念,包括Active Job的使用,Action Mailer的基础,以及如何发送邮件。Active Job是一个用于在Rails应用中异步处理作业的接口,它抽象了不同的队列后端,并允许开发者编写一次作业,...

    使用Rails、Vue、GraphQL和Devise进行令牌身份验证_Rub.zip

    在本文中,我们将深入探讨如何使用Rails、Vue.js、GraphQL和Devise来构建一个具有令牌身份验证的Web应用。Rails是Ruby on Rails框架,用于后端开发,Vue.js是一种轻量级的前端JavaScript框架,而GraphQL是一种强大的...

    使用Rails&Devise、Rhodes、Rhoconnect的示例应用程序_Ja.zip

    在这个例子中,Rhoconnect可能被用作数据同步引擎,将Rails服务器上的数据实时推送到Rhodes移动应用,或者接收移动应用的修改并更新到服务器。 综合来看,这个示例应用程序展示了如何利用Rails作为Web服务,Devise...

    Ruby-getschwifty利用ActiveJobActionCable在后台作业队列中渲染部分Rails视图

    服务器端通过Rails应用的Web服务器运行,接收和发送数据流;客户端库则负责在浏览器中订阅频道,并接收来自服务器的数据。 "get_schwifty"工具或方法可能是将这两个组件结合起来,用于在后台作业队列中渲染Rails...

    Agile Web Development with Rails

    Rails还提供了一系列内置的工具和服务,比如ActiveRecord ORM、ActionMailer邮件服务、ActiveSupport库等,帮助开发者快速实现常见功能。 #### 三、敏捷开发方法论 《敏捷Web开发与Rails》不仅是一本关于Rails框架...

    Rails API文档

    这份文档以网页格式呈现,主要面向开发者,帮助他们理解和使用Rails进行开发。 Rails API覆盖了以下关键知识点: 1. **ActiveRecord**:这是Rails中的ORM(对象关系映射)层,负责连接应用程序与数据库。它提供了...

    mailgun-rails-example:使用 Mailgun 的 API 或 SMTP 使用 Ruby on Rails 发送电子邮件

    为了发送电子邮件,你可以使用ActionMailer,这是Rails内置的一个邮件发送系统。创建一个新的邮件类,例如`app/mailers/user_mailer.rb`: ```ruby class UserMailer default from: 'your-email@example.com' ...

    Ruby-MailForm直接从Rails的表单发送电子邮件支持I18n验证附件和请求信息

    在Ruby开发中,发送电子邮件是一项常见的任务,尤其在构建基于Rails的应用程序时。MailForm库是专门为简化这一过程而设计的,它允许开发者直接从Rails的表单中发送邮件,并且提供了I18n(国际化)支持、验证功能以及...

    rails 2.2.3 依赖

    - `actionmailer-2.2.3.gem`:ActionMailer是Rails用于发送和接收电子邮件的组件。它抽象出邮件的发送过程,使开发者能够方便地编写邮件模板并集成到应用程序中。 - `activesupport-2.2.3.gem`:ActiveSupport包含...

    使用ActionMail发送邮件

    当你创建一个新的邮件类时,实际上是在定义一个邮件的动作,这个动作会包含邮件的接收者、主题、正文等信息。 1. 创建ActionMail类: 在Rails应用的`app/mailers`目录下创建一个新的Ruby文件,例如`welcome_mailer....

Global site tag (gtag.js) - Google Analytics