微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – Rails 3动作邮件OpenSSL :: SSL :: SSLError

当我尝试通过联系表单发送电子邮件时,我得到一个OpenSSL :: SSL :: SSLError.

在我的config / application.rb中,我已经添加了.

config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
     ActionMailer::Base.smtp_settings = {
   :address  => "mail.vinderhimlen.dk",:port  => 587,:user_name  => "asd@vinderhimlen.dk",:password  => "x",:authentication  => :login
 }

我的表格:

<%= simple_form_for [@support],:url => { :action => "create" },:html => { :method => :post } do |f| %>
    <%= f.input :sender_name,:label => 'Navn' %>
    <%= f.input :email,:label => 'E-mail' %>
    <%= f.input :support_type,:collection => ['Feedback','Idé',"Rapporter fejl",'Business','Andet'],:prompt => "Valg type",:label => 'Erinde' %>
    <%= f.label :Besked %>
    <%= f.text_area :content,:label => 'Besked',:style => 'width:500px;',%>
    <%= f.submit "submit",:value => 'Send besked' %>
<% end %>

我的支持控制器:

class SupportsController < ApplicationController
  def new
    # id is required to deal with form
    @support = Support.new(:id => 1)
  end

  def create
    @support = Support.new(params[:support])
    if @support.save
      redirect_to('/',:notice => "Support was successfully sent.")
    else
      flash[:alert] = "You must fill all fields."
      render 'new'
    end
  end
end

我的支持模式:

class Support
  include ActiveModel::Validations

  validates_presence_of :email,:sender_name,:support_type,:content 
  # to deal with form,you must have an id attribute
  attr_accessor :id,:email,:content

  def initialize(attributes = {})
    attributes.each do |key,value|
      self.send("#{key}=",value)
    end
    @attributes = attributes
  end

  def read_attribute_for_validation(key)
    @attributes[key]
  end

  def to_key
  end

  def save
    if self.valid?
      Notifier.support_notification(self).deliver
      return true
    end
    return false
  end
end

我的config / enviroments / devolpment:

Konkurranceportalen::Application.configure do
  # Settings specified here will take precedence over those in config/application.rb

  # In the development environment your application's code is reloaded on
  # every request.  This slows down response time but is perfect for development
  # since you don't have to restart the webserver when you make code changes.
  config.cache_classes = false

  # Log error messages when you accidentally call methods on nil.
  config.whiny_nils = true

  config.perform_delivery = true

  # Show full error reports and disable caching
  config.consider_all_requests_local       = true
  config.action_view.debug_rjs             = true
  config.action_controller.perform_caching = false

  # Don't care if the mailer can't send
  config.action_mailer.raise_delivery_errors = true

  # Print deprecation notices to the Rails logger
  config.active_support.deprecation = :log

  # Only use best-standards-support built into browsers
  config.action_dispatch.best_standards_support = :builtin
end

我的rails在提交表单时登录

Started POST "/supports" for 127.0.0.1 at 2011-05-31 14:07:07 +0200
      Processing by SupportsController#create as HTML
      Parameters: {"utf8"=>"Ô£ô","authenticity_token"=>"b4ILe7Xu4moToY8PN1X4wdyejz6
    DQwnZ69FPevAWuSI=","support"=>{"sender_name"=>"dfsdf","email"=>"mail@freelance
    rbasen.dk","support_type"=>"Feedback","content"=>"dsdsfsdfsdfsdfsdfsadasdasd"},"commit"=>"Send besked"}
      ←[1m←[36msql (0.0ms)←[0m  ←[1mSELECT SUM(`tags`.`konkurrancers_count`) AS sum_
    id FROM `tags`←[0m
      ←[1m←[35msql (10.0ms)←[0m  describe `kategoris_konkurrancers`
      ←[1m←[36mKonkurrancer Load (0.0ms)←[0m  ←[1mSELECT `konkurrancers`.* FROM `kon
    kurrancers`←[0m
      ←[1m←[35mCACHE (0.0ms)←[0m  SELECT `konkurrancers`.* FROM `konkurrancers`
      ←[1m←[36mTag Load (1.0ms)←[0m  ←[1mSELECT `tags`.* FROM `tags`←[0m
    Rendered notifier/support_notification.html.erb (1.0ms)

    Sent mail to asd@vinderhimlen.dk (277ms)
    Date: Tue,31 May 2011 14:07:08 +0200

    From: asd@freelancerbasen.dk

    To: asd@vinderhimlen.dk

    Message-ID: <4de4d9ecc67fdsfsdfsdf4ad@Home-Pc.mail>

    Subject: New Feedback

    Mime-Version: 1.0

    Content-Type: text/html;

     charset=UTF-8

    Content-transfer-encoding: quoted-printable



    =EF=BB=BFHello World!

    dsdsfsdfsdfsdfsdfsadasdasd=

    Completed   in 865ms

    OpenSSL::SSL::SSLError (hostname was not match with the server certificate):
      app/models/support.rb:24:in `save'
      app/controllers/supports_controller.rb:9:in `create'

    Rendered C:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.3/lib/action_dispatc
    h/middleware/templates/rescues/_trace.erb (1.0ms)
      ←[1m←[35mKonkurrancer Load (1.0ms)←[0m  SELECT `konkurrancers`.* FROM `konkurr
    ancers` LIMIT 15 OFFSET 0
      ←[1m←[36msql (4.0ms)←[0m  ←[1mSHOW TABLES←[0m
      ←[1m←[35msql (5.0ms)←[0m  SHOW TABLES
    Rendered C:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.3/lib/action_dispatc
    h/middleware/templates/rescues/_request_and_response.erb (252.0ms)
    Rendered C:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.3/lib/action_dispatc
    h/middleware/templates/rescues/diagnostics.erb within rescues/layout (318.0ms)

更新:

在我的config / application.rb中:

config.action_mailer.smtp_settings = {:enable_starttls_auto => false }
        config.action_mailer.raise_delivery_errors = true
        config.action_mailer.delivery_method = :smtp
             ActionMailer::Base.smtp_settings = {
           :address  => "mail.vinderhimlen.dk",:authentication  => :login,:domain => "vinderhimlen.dk",:enable_starttls_auto => false
         }

解决方法

你可以试试
:openssl_verify_mode  => 'none'

Undocumented ActionMailer openssl_verify_mode option

原文地址:https://www.jb51.cc/ruby/268609.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐