質問編集履歴

3 実行結果を追記しました。

koume

koume score 162

2018/02/14 15:58  投稿

Railsのメール送信設定についてわからないので教えてください。
Rails5.1.3でWebアプリケーション制作の勉強をしています。
メールの送信機能を試していますが、うまくいかないので質問させていただきます。
まだドメインを取得していない状態です。
新規に会員登録した場合のお礼メールを送信したいのです。
development.rbに以下のようにSMTPサーバー経由で送信する設定をしました。
```ここに言語を入力
development.rb
 config.action_mailer.delivery_method = :smtp
 config.action_mailer.raise_delivery_errors = true
 config.action_mailer.smtp_settings = {
   address: 'smtp.gmail.com',
   port: 587,
   user_name: 'sato.ichiro@gmail.com',
   password: '16桁のgoogleアプリパスワードを記述',
   domain: 'gmail.com'
   }
```
user_nameに制作中のサイトのメールアドレスを記述しました。(現在使用中のアドレスです。)
passwordに16桁のgoogleアプリパスワードを記述しました。
domeinはまだ取得していないので'exmple.com'と記述しています。
Action Mailerのプレビュー機能での表示確認はできています。
ためしに新規登録者にお礼のメールを送信するようにしましたが以下のエラーが出てしまいます。
```ここに言語を入力
Net::SMTPFatalError in Visitor::CustomersController#create
555 5.5.2 Syntax error. k3sm25357608pff.41 - gsmtp
Extracted source (around line #32):
             
30     redirect_to :visitor_root
31     user = @customer_form.customer
32     ThanksMailer.thank_you(user).deliver_now---------Action Mailerのプレビュー機能での表示確認はできています。
33   else
34     flash.now.alert = '入力に誤りがあります。'
35     render action: 'new'
```
他の設定は以下のようにしています。
```ここに言語を入力
application_mailer.rb
class ApplicationMailer < ActionMailer::Base
 default from: '運営局<sato.ichiro@gmail.com>'
 layout 'mailer'
end
```
```ここに言語を入力
thanks_mailer.rb
class ThanksMailer < ApplicationMailer
 default from: '運営局<sato.ichiro@gmail.com>'
 
 def thank_you(user)
   @user = user
   mail to: user.email,
     subject: "会員登録ありがとうございました。"
 end
end
```
ドメインを取得していないのが原因なのでしょうか?記述や設定がおかいしのでしょうか?
どなたか教えていただけないでしょうか?宜しくお願いします。
追記
回答いただいた件でコンソールで試してみました。
```ここに言語を入力
 config.action_mailer.delivery_method = :smtp
 config.action_mailer.raise_delivery_errors = true
 config.action_mailer.smtp_settings = {
   address: 'smtp.gmail.com',
   port: 587,
   user_name: 'sato.ichiro@gmail.com',
   password: '****************',
   domain: 'smtp.gmail.com'
   #authentication: 'plain',-----------$ rails sでエラーになるのでコメントアウト
   #enable_starttls_auto: true---------$ rails sでエラーになるのでコメントアウト
   }
```
SyntaxErrorが出るのですが間違いがわかりませんでした。
```ここに言語を入力
エラーの内容
syntax error, unexpected tIDENTIFIER, expecting '}' (SyntaxError)
   authentication: 'plain',
syntax error, unexpected tIDENTIFIER, expecting '}' (SyntaxError)
   enable_starttls_auto: true
```
コンソールで以下を実行
user = Customer.find(5)
ThanksMailer.thank_you(user).deliver_now
 
コンソールで実行すると送信可能でした。  
 
追記2  
```ここに言語を入力  
送信可能  
default from:には日本語のみ記述  
 
class ApplicationMailer < ActionMailer::Base  
 default from: '運営局'  
 layout 'mailer'  
end  
```
コンソールで動かしたらメール送信できました。
```ここに言語を入力
送信可能
default from:に送信元のメールアドレスのみ記述
class ApplicationMailer < ActionMailer::Base
 default from: 'sato.ichiro@gmail.com'
 layout 'mailer'
end
```
```ここに言語を入力
送信不可 エラー発生
Net::SMTPFatalError: 555 5.5.2 Syntax error. r13sm29313822pgq.25 - gsmtp
default from:にアルファベットを使用するとエラーが発生。
class ApplicationMailer < ActionMailer::Base
 default from: 'abc事務局'-----------アルファベットを使用するとNG
 layout 'mailer'
end
```
変な感じですがことごとくアルファベットを受け付けませんでした。
  • Ruby on Rails

    14300 questions

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

2 コード変更の実行結果を追記しました。

koume

koume score 162

2018/02/14 15:16  投稿

Railsのメール送信設定についてわからないので教えてください。
Rails5.1.3でWebアプリケーション制作の勉強をしています。
メールの送信機能を試していますが、うまくいかないので質問させていただきます。
まだドメインを取得していない状態です。
新規に会員登録した場合のお礼メールを送信したいのです。
development.rbに以下のようにSMTPサーバー経由で送信する設定をしました。
```ここに言語を入力
development.rb
 config.action_mailer.delivery_method = :smtp
 config.action_mailer.raise_delivery_errors = true
 config.action_mailer.smtp_settings = {
   address: 'smtp.gmail.com',
   port: 587,
   user_name: 'sato.ichiro@gmail.com',
   password: '16桁のgoogleアプリパスワードを記述',
   domain: 'gmail.com'
   }
```
user_nameに制作中のサイトのメールアドレスを記述しました。(現在使用中のアドレスです。)
passwordに16桁のgoogleアプリパスワードを記述しました。
domeinはまだ取得していないので'exmple.com'と記述しています。
Action Mailerのプレビュー機能での表示確認はできています。
ためしに新規登録者にお礼のメールを送信するようにしましたが以下のエラーが出てしまいます。
```ここに言語を入力
Net::SMTPFatalError in Visitor::CustomersController#create
555 5.5.2 Syntax error. k3sm25357608pff.41 - gsmtp
Extracted source (around line #32):
             
30     redirect_to :visitor_root
31     user = @customer_form.customer
32     ThanksMailer.thank_you(user).deliver_now---------Action Mailerのプレビュー機能での表示確認はできています。
33   else
34     flash.now.alert = '入力に誤りがあります。'
35     render action: 'new'
```
他の設定は以下のようにしています。
```ここに言語を入力
application_mailer.rb
class ApplicationMailer < ActionMailer::Base
 default from: '運営局<sato.ichiro@gmail.com>'
 layout 'mailer'
end
```
```ここに言語を入力
thanks_mailer.rb
class ThanksMailer < ApplicationMailer
 default from: '運営局<sato.ichiro@gmail.com>'
 
 def thank_you(user)
   @user = user
   mail to: user.email,
     subject: "会員登録ありがとうございました。"
 end
end
```
ドメインを取得していないのが原因なのでしょうか?記述や設定がおかいしのでしょうか?
どなたか教えていただけないでしょうか?宜しくお願いします。
どなたか教えていただけないでしょうか?宜しくお願いします。
追記
回答いただいた件でコンソールで試してみました。
```ここに言語を入力
 config.action_mailer.delivery_method = :smtp
 config.action_mailer.raise_delivery_errors = true
 config.action_mailer.smtp_settings = {
   address: 'smtp.gmail.com',
   port: 587,
   user_name: 'sato.ichiro@gmail.com',
   password: '****************',
   domain: 'smtp.gmail.com'
   #authentication: 'plain',-----------$ rails sでエラーになるのでコメントアウト
   #enable_starttls_auto: true---------$ rails sでエラーになるのでコメントアウト
   }
```
SyntaxErrorが出るのですが間違いがわかりませんでした。
```ここに言語を入力
エラーの内容
syntax error, unexpected tIDENTIFIER, expecting '}' (SyntaxError)
   authentication: 'plain',
syntax error, unexpected tIDENTIFIER, expecting '}' (SyntaxError)
   enable_starttls_auto: true
```
コンソールで以下を実行
user = Customer.find(5)
ThanksMailer.thank_you(user).deliver_now
```
コンソールで動かしたらメール送信できました。
  • Ruby on Rails

    14300 questions

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

1 domainをexample.comからgmail.comに変更。

koume

koume score 162

2018/02/13 22:24  投稿

Railsのメール送信設定についてわからないので教えてください。
Rails5.1.3でWebアプリケーション制作の勉強をしています。
メールの送信機能を試していますが、うまくいかないので質問させていただきます。
まだドメインを取得していない状態です。
新規に会員登録した場合のお礼メールを送信したいのです。
development.rbに以下のようにSMTPサーバー経由で送信する設定をしました。
```ここに言語を入力
development.rb
 config.action_mailer.delivery_method = :smtp
 config.action_mailer.raise_delivery_errors = true
 config.action_mailer.smtp_settings = {
   address: 'smtp.gmail.com',
   port: 587,
   user_name: 'sato.ichiro@gmail.com',
   password: '16桁のgoogleアプリパスワードを記述',
   domain: 'example.com'
   domain: 'gmail.com'
   }
```
user_nameに制作中のサイトのメールアドレスを記述しました。(現在使用中のアドレスです。)
passwordに16桁のgoogleアプリパスワードを記述しました。
domeinはまだ取得していないので'exmple.com'と記述しています。
Action Mailerのプレビュー機能での表示確認はできています。
ためしに新規登録者にお礼のメールを送信するようにしましたが以下のエラーが出てしまいます。
```ここに言語を入力
Net::SMTPFatalError in Visitor::CustomersController#create
555 5.5.2 Syntax error. k3sm25357608pff.41 - gsmtp
Extracted source (around line #32):
             
30     redirect_to :visitor_root
31     user = @customer_form.customer
32     ThanksMailer.thank_you(user).deliver_now---------Action Mailerのプレビュー機能での表示確認はできています。
33   else
34     flash.now.alert = '入力に誤りがあります。'
35     render action: 'new'
```
他の設定は以下のようにしています。
```ここに言語を入力
application_mailer.rb
class ApplicationMailer < ActionMailer::Base
 default from: '運営局<sato.ichiro@gmail.com>'
 layout 'mailer'
end
```
```ここに言語を入力
thanks_mailer.rb
class ThanksMailer < ApplicationMailer
 default from: '運営局<sato.ichiro@gmail.com>'
 
 def thank_you(user)
   @user = user
   mail to: user.email,
     subject: "会員登録ありがとうございました。"
 end
end
```
ドメインを取得していないのが原因なのでしょうか?記述や設定がおかいしのでしょうか?
どなたか教えていただけないでしょうか?宜しくお願いします。
  • Ruby on Rails

    14300 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る