質問するログイン新規登録

質問編集履歴

1

内容をより詳細にしました。

2018/11/01 11:45

投稿

syclimb
syclimb

スコア13

title CHANGED
@@ -1,1 +1,1 @@
1
- 問い合わせ内容をメール受け取る際のOpenTimeoutエラー
1
+ RailsActionMailerを用いた時のOpenTimeoutエラーを解決したい
body CHANGED
@@ -2,35 +2,37 @@
2
2
  【実現したいこと】
3
3
  ECにおいて注文が発生した際に、注文の内容がメールで自動送信されるようにしたい。
4
4
  【前提】
5
- Ruby on Rails 5
5
+ Ruby on Rails 5を用いてWebアプリケーションを作成しています。
6
- ```
7
- rails g mailer order
6
+ そこで注文が発生した際に、その注文内容がメールで送られてくるようにしたくいです。
8
- ```
9
- Action Mailer生成
7
+ それがRailsのActionMailerを用いればきると知り、下記のサイト参考にコードを書きました。
8
+
10
9
  【参考にしたサイト】
11
10
  https://www.sejuku.net/blog/48739
12
11
  http://a-new-step.hatenablog.com/entry/2018/06/24/130107
13
12
  http://www.cattlemute.com/2017/10/30/55/
14
13
 
15
- おそらく基本的なところからわかっていないです。
16
- ご教授いただけると幸いです。よろしくお願いいたします。
17
14
 
18
15
  ### 発生している問題・エラーメッセージ
19
- completeアクションが実行される下記のエラーがでてしまい、メールが送信されません。
16
+ 注文確定時にはform_tagでcompleteアクションが実行されるのですが、下記のエラーがでてしまい、メールが送信されません。
20
17
 
21
18
  **Net::OpenTimeout in OrderController#complete**
22
19
  **execution expired**
23
- ```
24
- #order_controller.rb
25
- def complete
26
- OrderMailer.send_mail(order).deliver_now
27
- end
28
- ```
29
20
 
21
+ なおメーラーをインストールする前は特に問題なく動いていました。
30
- ### 該当ソースコード
22
+ おそらくcompleteアクション内(下記参照)
31
23
 
24
+ **OrderMailer.send_mail(order).deliver_now**
25
+
26
+ 部分で何かしらエラーが発生しているものと思われます。
27
+ (binding.pryを用いたところ、その直前までは問題なく動きました)
28
+
29
+
30
+
31
+
32
+ # メーラーに関わる設定など
33
+ ###order_mailer.rb
34
+ Order.Mailerモデルにおいてsend_mailメソッドを用いています。
32
35
  ```
33
- #order_mailer.rb
34
36
  class OrderMailer < ApplicationMailer
35
37
 
36
38
  def send_mail(order)
@@ -43,9 +45,36 @@
43
45
  end
44
46
  end
45
47
  ```
48
+ ###order_controller.rb
49
+ 注文確定時のcompleteアクション
46
50
  ```
47
- #config\environment\development.rb
48
51
 
52
+ def complete
53
+ @order=Order.new(
54
+ name1: session[:name1],
55
+ name2: session[:name2],
56
+ tel1: session[:tel1],
57
+ tel2: session[:tel2],
58
+ tel3: session[:tel3],
59
+ email: session[:email],
60
+ zipcode: session[:zipcode],
61
+ pref: session[:pref],
62
+ addr1: session[:addr1],
63
+ addr2: session[:addr2],
64
+ delivery_date: session[:delivery_date],
65
+ pay_type: session[:pay_type],
66
+ )
67
+
68
+ if order.save
69
+ OrderMailer.send_mail(order).deliver_now
70
+ flash[:notice]="ご注文ありがとうございました"
71
+ render("home/top")
72
+ end
73
+ end
74
+ ```
75
+ ###config\environment\development.rb
76
+  - 正直このファイルの意味はよくわかっていないです…
77
+ ```
49
78
  Rails.application.configure do
50
79
  # Settings specified here will take precedence over those in config/application.rb.
51
80
 
@@ -94,8 +123,8 @@
94
123
  address: 'smtp.gmail.com',
95
124
  port: 587,
96
125
  domain: 'gmail.com',
97
- user_name: '<******@gmail.com>',
126
+ user_name: '******@gmail.com',
98
- password: '<******>',
127
+ password: '******',
99
128
  authentication: 'plain',
100
129
  enable_starttls_auto: true,
101
130
  }
@@ -103,7 +132,13 @@
103
132
 
104
133
  end
105
134
  ```
106
-
135
+ ###application_mailer.rb
136
+ ```
137
+ class ApplicationMailer < ActionMailer::Base
138
+ default from: "from@example.com"
139
+ layout 'mailer'
140
+ end
141
+ ```
107
142
  ### 試したこと
108
143
 
109
- mailerのプレビュー機能では問題ありませんでした。
144
+ mailerのプレビュー機能(localhost:3000/rails/mailers/order_mailer)では問題ありませんでした。