24149


唐突で大変、申し訳ありません。

現在、RailsでActionMailerを用いて問合せフォーム実装しているのですが、下記エラーが表示されメールを送信することができません。  
原因は何でしょうか？

エラー文  
Net::SMTPSyntaxError in InquiriesController#thanks

501 Recipient syntax error

コントローラ

[code]

    def thanks 
     @inquiry = current_user.inquiries.build(confirm_params) 
     @blog = Blog.find(params[:id])
    
     @inquiry.blog_id = @blog.id
    
     if params[:back] 
        render :new 
     elsif @inquiry.save # DBに保存できたらメールを送信
    
[/code]

@mail = InquiryMailer.sendmail_confirm(@inquiry,@blog).deliver_now  
else  
render :new  
end

[code]

    end
    
[/code]

ブラウザでは、`@mail =
InquiryMailer.sendmail_confirm(@inquiry,@blog).deliver_now`に問題があると表示されています。501エラーがどのようなものかも分からず困っています。  
何卒宜しくお願い致します。

# ・追記しました(現在の最新のソースコードになります)

# team_inquiries_controller.rb

class TeamInquiriesController < ApplicationController

def new  
@team_inquiry = current_user.team_inquiries.build  
end

def confirm  
@team_inquiry = current_user.team_inquiries.build(confirm_params)

[code]

    if @team_inquiry.valid?
    
    else
      render action: 'new'
    end
    
[/code]

end

def thanks  
@team_inquiry = current_user.team_inquiries.build(confirm_params)  
@blog = Blog.find(params[:id])

[code]

    @team_inquiry.blog_id = @blog.id
    
      if params[:back]
        render :new
      elsif @team_inquiry.save # DBに保存できたらメールを送信
        @mail = TeamInquiryMailer.sendmail_confirm(@team_inquiry,@blog).deliver_now
      else
        render :new
      end
    
[/code]

end

private

def confirm_params  
params.require(:team_inquiry).permit(:content,:blog_id)  
end

end

### ※上記、thanksアクション内の、.sendmail_confirm(@team_inquiry,@blog)の中身です。@mail
=TeamInquiryMailer~の上で実行しました。

raise @team_inquiry.inspect  
TeamInquiry id: 137, content: "今日はいい天気ですね！！", created_at: "2016-04-19
06:06:53", updated_at: "2016-04-19 06:06:53", user_id: 265, blog_id: 8

raise @blog.inspect  
Blog id: 8, title: "こんにちは！！", content: "明日は宜しくお願いします！！", created_at:
"2016-03-25 00:41:21", updated_at: "2016-03-25 00:41:21", user_id: 262,
activity_area: "東京都", our_team_id: 5

# team_inquiry_mailer.rb

class TeamInquiryMailer < ApplicationMailer

#デフォルトのヘッダ情報  
default from: "info@ailes.com" # 送信元アドレス

def sendmail_confirm(team_inquiry,blog)  
@team_inquiry = team_inquiry  
@blog = blog

[code]

    mail to: blog.user.email, cc: ([@team_inquiry.blog.title, @team_inquiry.user.name, @team_inquiry.content]), subject: "投稿したブログに問い合わせがありました。"
    
[/code]

end

end

# sendmail_confirm.html.erb

・投稿したブログのタイトル  
%= @team_inquiry.blog.title %

・お名前  
%= @team_inquiry.user.name %

・問合せ内容  
%= simple_format(@team_inquiry.content) %

# team_inquiry.rb

class TeamInquiry < ActiveRecord::Base  
belongs_to :user  
belongs_to :blog  
validates :content, length: { in: 1..500 } #1000文字以下で入力  
end

# blog.rb

class Blog < ActiveRecord::Base  
belongs_to :user  
belongs_to :our_team  
has_many :team_inquiries, dependent: :destroy  
end

# routes.rb

resources :blogs do  
resources :comments

[code]

    member do
      get 'team_inquiries' => 'team_inquiries#new'
      post 'team_inquiries/confirm' => 'team_inquiries#confirm'
      patch 'team_inquiries/thanks' => 'team_inquiries#thanks' #PATCHリクエストに対応 
      post 'team_inquiries/thanks' => 'team_inquiries#thanks' #送信完了ページ
    end
    
[/code]

end

# schema.rb

create_table "blogs", force: :cascade do |t|  
t.string "title"  
t.text "content"  
t.datetime "created_at", null: false  
t.datetime "updated_at", null: false  
t.integer "user_id"  
t.string "activity_area"  
t.integer "our_team_id"  
end

create_table "team_inquiries", force: :cascade do |t|  
t.text "content"  
t.datetime "created_at", null: false  
t.datetime "updated_at", null: false  
t.integer "user_id"  
t.integer "blog_id"  
end

現状は、team_inquiries_controller.rbのthanksアクション内の.deliver_nowをコメントアウトすれば、thanks.html.erbが表示され、DBには正常に保存されます。


CC BY-SA 3.0
2016-04-18T23:55:07.150
24128
2016-04-19T06:58:46.537
2016-04-19T06:44:31.083
12323
12323
question
ruby-on-rails ruby
RailsのActionMailerで501 Recipient syntax errorが発生しメールが送信できません


`sendmail_confirm`メソッド内のこの部分が根本的におかしいですね。

[code]

    mail to: blog.user.email, cc: ([@team_inquiry.blog.title, @team_inquiry.user.name, @team_inquiry.content]), subject: "投稿したブログに問い合わせがありました。"
    
[/code]

`mail`メソッドの`cc`パラメータには(通常のメールアプリでCCに何を記入するか思い出してください)`to`と同様に有効なメールアドレスを記載しなければいけないのに、`([@team_inquiry.blog.title,
@team_inquiry.user.name,
@team_inquiry.content])`と言う、明らかにメールアドレスの形式とは異なる文字列(の配列)が渡されています。

取り敢えず、上の行から余分な`cc`を指定する部分を削ってみてください。

[code]

    mail to: blog.user.email, subject: "投稿したブログに問い合わせがありました。"
    
[/code]

これで動作確認をした上で、本当に`cc`に何かを指定する必要があったのか(あったのならその宛先)を確かめてください。


CC BY-SA 3.0
2016-04-19T06:58:46.537
24149
2016-04-19T06:58:46.537
13972
24128
answer