質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

9121閲覧

railsのActionMailerのエラーSocketError (getaddrinfo: 名前またはサービスが不明です):の対処

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2015/06/21 22:31

編集2015/06/22 02:59

ruby on railsでActionMailerを使いました。

http://ruby-rails.hatenadiary.com/entry/20140828/1409236436

これに書かれている通り自分のプロジェクトに合わせて設定したのですが
(Gmailで設定しました)

Completed 500 Internal Server Error in 70ms (ActiveRecord: 9.7ms)
SocketError (getaddrinfo: 名前またはサービスが不明です)
とエラーになります。

どう対処したらいいですか?

追記

記事を投稿する際にエラーが起こります。(記事は保存されます)
メールのセッティングは
app/meilers/post_mailer.rb

default from: "from@example.com"
def post_email(user,post)
@user = user
mail to: "@user.email", subject: "記事を投稿しました。"
end

app/Views/post_mailer/post_email.html.erb
app/Views/post_mailer/post_email.text.erb
こちらは参考にしたサイトと全く一緒です。

controllers/posts_controller.rb
def create
@user=current_user
@post =Post.new(post_params)
@post.user_id = @user.id
if @post.save
PostMailer.post_email(@user,@post).deliver
redirect_to posts_path
else
render :new
end
end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rifuch

2015/06/22 01:34

エラーはどのタイミングで発生しましたか? メールのセッティングはどこに書いて、どんな風にしてありますか? 追加の情報をお願いします
guest

回答2

0

ベストアンサー

/config/environments/development.rbの記述が間違ってます。

lang

1# あなたの記述 2 config.action_mailer.delivery_method = :smtp 3 config.action_mailer.raise_delivery_errors = true 4 config.action_mailer.perform_deliveries = true 5 config.action_mailer.smtp_settings = { 6 address: '*******@gmail.com', # <==== ここが間違ってます 7 port: '587', 8 domain: 'gmail.com', 9 user_name: 'gmailのusername', 10 password: 'gmailのpassword', 11 :authentication => :plain, 12 :enable_starttls_auto => true 13 } 14 15# 正しい記述 16 config.action_mailer.delivery_method = :smtp 17 config.action_mailer.smtp_settings = { 18 address: "smtp.gmail.com", # <======= 送信メールサーバーのアドレスを入れる 19 port: 587, 20 domain: "domain.of.sender.net", # <===== ぶっちゃけ何でもいい 21 authentication: "plain", 22 user_name: "hogefuga@gmail.com", # <===== 送信するメールアカウント 23 password: "hogefugapassword", # <===== 送信するメールアカウントのパスワード 24 enable_starttls_auto: true 25 } 26 27

という訳で、送信サーバーの記述が正しくなくて、SMTP接続先が見つかっていなかったようですね。

質問の時に、この辺を書いておくと答える方も答えやすいかと。

投稿2015/06/23 04:56

rifuch

総合スコア1901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/06/23 21:00

できました! ありがとうございます! 質問の仕方気を付けます!
guest

0

回答修正します。

実際に試してみました。
config/environments/development.rb に以下の2行の設定が無いと、NameErrorになりますね。

config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_deliveries = true

投稿2015/06/22 01:35

編集2015/06/22 02:37
takutok

総合スコア392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rifuch

2015/06/22 01:38

domainの項目は別にチェック対象にはなりませんよ。 架空のドメインを記述してもエラーにはなりません。
takutok

2015/06/22 02:37

コメントありがとうございます。回答修正しました。
退会済みユーザー

退会済みユーザー

2015/06/22 03:06

config.action_mailer.raise_delivery_errors = true config.action_mailer.perform_deliveries = true この2行を設定してみましたが SocketError (getaddrinfo: 名前またはサービスが不明です): このエラーが消えません。。
rifuch

2015/06/22 07:22

config.action_mailer.raise_delivery_errorsはメールの送信失敗したときにエラーをRaiseするか、 config.action_mailer.perform_deliveriesは、Mailerのdeliverメソッドがコールされたときに実際メールを送信するかの設定で、どちらも関係ないかと。 ちなみに、raise_delivery_errorsの方は、メール送信の際のエラーを捕捉する必要があまりない(設定がきちんとしていれば、メールサーバーが不調以外で起こることはあまりない)ので、たいていの場合は、false perform_deliveriesは、開発環境で実際メールを送る必要が無いときなどに設定するので、 config/environment/test.rbの時は普通false config/environment/productionはtrue config/environment/developmentは状況に合わせて、という感じで設定します。 情報の追加にもお願いしましたが、上記のメール設定はどこにどのように書かれてますか? config/application.rb もしくは config/environment/以下のファイルに設定するのですが、そこに設定してますか?
退会済みユーザー

退会済みユーザー

2015/06/22 15:21

/config/environments/development.rbに以下のように設定しています config.action_mailer.delivery_method = :smtp config.action_mailer.raise_delivery_errors = true config.action_mailer.perform_deliveries = true config.action_mailer.smtp_settings = { address: '*******@gmail.com', port: '587', domain: 'gmail.com', user_name: 'gmailのusername', password: 'gmailのpassword', :authentication => :plain, :enable_starttls_auto => true }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問