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

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

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

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Q&A

解決済

1回答

1826閲覧

Railsのメール送信機能のエラーが治らない

pancho

総合スコア12

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

0グッド

0クリップ

投稿2020/02/09 02:33

前提・実現したい

今作っているアプリにメール送信機能を付けたいと思い
色々なサイトを参考に
まず「ユーザー登録をしたらメールが送られる」ようにしてみようとやってみました。

参考にしたサイト
https://qiita.com/hirotakasasaki/items/ec2ca5c611ed69b5e85e
https://qiita.com/annaaida/items/81d8a3f1b7ae3b52dc2b
https://www.sejuku.net/blog/48739
https://freesworder.net/rails-mail/

発生している問題・エラーメッセージ

イメージ説明

ユーザー登録をすると
ユーザー登録は出来ていますが「メールを送る」段階で上記のエラーが出ます。
原因と解決方法が分かりません。

試したこと

調べて出て来たGmail側の設定の
二段階認証や安全性の低いアプリの設定は「オン」にしました。
「メール転送とPOP/IMAP」の所で、IMAPを有効にしています。

ソースコード

config/environments/development.rb

rails

1Rails.application.configure do 2 # Settings specified here will take precedence over those in config/application.rb. 3 4 # In the development environment your application's code is reloaded on 5 # every request. This slows down response time but is perfect for development 6 # since you don't have to restart the web server when you make code changes. 7 config.cache_classes = false 8 9 # Do not eager load code on boot. 10 config.eager_load = false 11 12 # Show full error reports. 13 config.consider_all_requests_local = true 14 15 # Enable/disable caching. By default caching is disabled. 16 # Run rails dev:cache to toggle caching. 17 if Rails.root.join('tmp', 'caching-dev.txt').exist? 18 config.action_controller.perform_caching = true 19 20 config.cache_store = :memory_store 21 config.public_file_server.headers = { 22 'Cache-Control' => "public, max-age=#{2.days.to_i}" 23 } 24 else 25 config.action_controller.perform_caching = false 26 27 config.cache_store = :null_store 28 end 29 30 # Store uploaded files on the local file system (see config/storage.yml for options) 31 config.active_storage.service = :local 32 33 # Don't care if the mailer can't send. 34 config.action_mailer.raise_delivery_errors = true 35 config.action_mailer.delivery_method = :smtp 36 config.action_mailer.smtp_settings = { 37 port: 587, 38 address: 'smtp.gmail.com', 39 domain: 'smtp.gmail.com', 40 user_name: 'gmailアドレス', 41 password: '16桁のパスワード', 42 authentication: 'login', 43 enable_starttls_auto: true 44 } 45 46 config.action_mailer.perform_caching = false 47 48 # Print deprecation notices to the Rails logger. 49 config.active_support.deprecation = :log 50 51 # Raise an error on page load if there are pending migrations. 52 config.active_record.migration_error = :page_load 53 54 # Highlight code that triggered database queries in logs. 55 config.active_record.verbose_query_logs = true 56 57 # Debug mode disables concatenation and preprocessing of assets. 58 # This option may cause significant delays in view rendering with a large 59 # number of complex assets. 60 config.assets.debug = true 61 62 # Suppress logger output for asset requests. 63 config.assets.quiet = true 64 65 # Raises error for missing translations 66 # config.action_view.raise_on_missing_translations = true 67 68 # Use an evented file watcher to asynchronously detect changes in source code, 69 # routes, locales, etc. This feature depends on the listen gem. 70 config.file_watcher = ActiveSupport::EventedFileUpdateChecker 71end

app/mailers/application_mailer.rb

rails

1class ApplicationMailer < ActionMailer::Base 2 default from: '管理者より' 3 4 layout 'mailer' 5end

app/mailers/nishibako_mailer.rb

rails

1class NishibakoMailer < ApplicationMailer 2 def send_when_create(user) 3 @user = user 4 mail to: user.email, 5 subject: 'こんにちは!新しいユーザーが追加されました' 6 end 7end

app/controllers/users_controller.rb

rails

1class UsersController < ApplicationController 2 before_action :require_user_logged_in, only: [:index, :show] 3 4 def index 5 @users = User.order(id: :desc).page(params[:page]).per(25) 6 end 7 8 def new 9 @user = User.new 10 end 11 12 def create 13 @user = User.new(user_params) 14 15 if @user.save 16 NishibakoMailer.send_when_create(@user).deliver 17 flash[:success] = 'ユーザーを登録しました。' 18 redirect_to users_path 19 else 20 flash.now[:danger] = 'ユーザーの登録に失敗しました。' 21 render :new 22 end 23 end 24 25 def edit 26 @user = User.find(params[:id]) 27 end 28 29 def update 30 @user = User.find(params[:id]) 31 32 if @user.update(user_params) 33 flash[:success] = "正常に更新されました。" 34 redirect_to users_path 35 else 36 flash.now[:danger] = "更新されませんでした。" 37 render :edit 38 end 39 end 40 41 def destroy 42 @user = User.find(params[:id]) 43 @user.destroy 44 45 flash[:success] = '削除されました。' 46 redirect_to users_url 47 end 48 49 private 50 51 def user_params 52 params.require(:user).permit(:name, :email, :password, :password_confirmation) 53 end 54end

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

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

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

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

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

HTMLdoc

2020/02/12 09:35

一度再起動を試してみてください。 今度から環境変数使って投稿してください。
pancho

2020/02/13 02:02

修正依頼ありがとうございます。 しかし、「環境変数」が理解しきれていないので、教えていただけると助かります。
guest

回答1

0

自己解決

試しにTechpitの「社会の窓が空いていることを匿名メールで通知サービスを作ってみよう!」をやってみて
その後その作り方を参考にしたら出来るようになりました。
どこが悪かったかは分からないので、ここを見に来た方には参考にはならないかもしれませんが
行き詰ったら少々お金はかかりますがTechpitで完成品を作ってみるのも疑問解決への一手かな?と思いました。

環境変数の登録の仕方やGmailとの連携も載っていたので助かりました。

投稿2020/06/27 05:32

pancho

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問