前提・実現したいこと
Ruby on Rails のチュートリアルに沿って少しずつ改変しオリジナルのアプリを作成しています.アカウントの有効化とパスワードの再設定をMailerを用いて実装したいのですが,開発環境内のサーバーログを確認すると,文字化けしており,メール内容が確認できません.メール内にアカウント有効化のリンクやパスワード再設定用のリンクを置いているので確認したくてもできない状況です.どこかの段階で誤って文字コードを変換してしまっているのでしょうか.
また,herokuを用いてディプロイしているのですが,本番環境では問題なくメールを読むことができ,有効化リンクも正常であるようです.
よろしくお願いします.
発生している問題・エラーメッセージ
エラーメッセージ(サーバーログ)
Parameters: {"utf8"=>"✓", "authenticity_token"=>"HK5kumujwh49eoI57Z7WJhws6r+oZHshlc/6B0P4A1sGXW9szC3daPVV3Up0sJ1e//RXC9n7ONviy7RlEA3+vg==", "user"=>{"name"=>"テスト", "email"=>"test3@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"新規登録"} (0.1ms) begin transaction User Exists (0.2ms) SELECT 1 AS one FROM "users" WHERE LOWER("users"."email") = LOWER(?) LIMIT ? [["email", "test3@gmail.com"], ["LIMIT", 1]] User Create (2.2ms) INSERT INTO "users" ("name", "email", "created_at", "updated_at", "password_digest", "activation_digest") VALUES (?, ?, ?, ?, ?, ?) [["name", "テスト"], ["email", "test3@gmail.com"], ["created_at", "2020-04-27 13:15:14.678637"], ["updated_at", "2020-04-27 13:15:14.678637"], ["password_digest", "$2a$10$4VA9yIINMhL98ZNewQF0guKDk/ktbKQ7Yteg5J7GUzLYmA10ck5ja"], ["activation_digest", "$2a$10$yihXSgtJ9bt9CSg9MQxtveOtvnL.489VbxRMAgjUh9Y3dHtbQqxvG"]] (7.8ms) commit transaction Rendering user_mailer/account_activation.html.erb within layouts/mailer Rendered user_mailer/account_activation.html.erb within layouts/mailer (0.7ms) Rendering user_mailer/account_activation.text.erb within layouts/mailer Rendered user_mailer/account_activation.text.erb within layouts/mailer (0.4ms) UserMailer#account_activation: processed outbound mail in 171.8ms Sent mail to test3@gmail.com (7.2ms) Date: Mon, 27 Apr 2020 13:15:14 +0000 From: noreply@example.com To: test3@gmail.com Message-ID: <5ea6dae2ef443_1e372d21f5c73687@ip-172-31-47-27.mail> Subject: =?UTF-8?Q?=E3=80=90Symphony=E3=80=91=E3=82=A2=E3=82=AB=E3=82=A6=E3=83=B3=E3=83=88=E3=81=AE=E6=9C=89=E5=8A=B9=E5=8C=96?= Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="--==_mimepart_5ea6dae2ede03_1e372d21f5c73542"; charset=UTF-8 Content-Transfer-Encoding: 7bit ----==_mimepart_5ea6dae2ede03_1e372d21f5c73542 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 44OG44K544OI5qeY77yMDQoNClN5bXBob25544Gr5paw6KaP55m76Yyy44GX 44Gm44GE44Gf44Gg44GN44GC44KK44GM44Go44GG44GU44GW44GE44G+44GZ 77yO5Lul5LiL44Gu44Oq44Oz44Kv44KS44Kv44Oq44OD44Kv44GX44Ki44Kr 44Km44Oz44OI44Gu5pyJ5Yq55YyW44KS44GX44Gm44GP44Gg44GV44GE77yO DQoNCmh0dHBzOi8vNjUwYWJiMmM1ZDNkNGIwZmJhMGE0NWU1NTE5Njk5NTQu dmZzLmNsb3VkOS5hcC1ub3J0aGVhc3QtMS5hbWF6b25hd3MuY29tL2FjY291 bnRfYWN0aXZhdGlvbnMvUE5EaFR1dVN4QlEwQmhxU0pyQklmUS9lZGl0P2Vt YWlsPXRlc3QzJTQwZ21haWwuY29tDQo= ----==_mimepart_5ea6dae2ede03_1e372d21f5c73542 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCiAgPGhlYWQ+DQogICAgPG1ldGEg aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7 IGNoYXJzZXQ9dXRmLTgiIC8+DQogICAgPHN0eWxlPg0KICAgICAgLyogRW1h aWwgc3R5bGVzIG5lZWQgdG8gYmUgaW5saW5lICovDQogICAgPC9zdHlsZT4N CiAgPC9oZWFkPg0KDQogIDxib2R5Pg0KICAgIDxoMT5TeW1waG9ueTwvaDE+ DQoNCjxwPuODhuOCueODiOanmO+8jDwvcD4NCg0KPHA+U3ltcGhvbnnjgavm lrDopo/nmbvpjLLjgZfjgabjgYTjgZ/jgaDjgY3jgYLjgorjgYzjgajjgYbj gZTjgZbjgYTjgb7jgZnvvI7ku6XkuIvjga7jg6rjg7Pjgq/jgpLjgq/jg6rj g4Pjgq/jgZfjgqLjgqvjgqbjg7Pjg4jjga7mnInlirnljJbjgpLjgZfjgabj gY/jgaDjgZXjgYTvvI48L3A+DQoNCg0KPGEgaHJlZj0iaHR0cHM6Ly82NTBh YmIyYzVkM2Q0YjBmYmEwYTQ1ZTU1MTk2OTk1NC52ZnMuY2xvdWQ5LmFwLW5v cnRoZWFzdC0xLmFtYXpvbmF3cy5jb20vYWNjb3VudF9hY3RpdmF0aW9ucy9Q TkRoVHV1U3hCUTBCaHFTSnJCSWZRL2VkaXQ/ZW1haWw9dGVzdDMlNDBnbWFp bC5jb20iPuOCouOCq+OCpuODs+ODiOacieWKueWMljwvYT4NCg0KDQoNCg0K ICA8L2JvZHk+DQo8L2h0bWw+DQo= ----==_mimepart_5ea6dae2ede03_1e372d21f5c73542-- Redirected to https://650abb2c5d3d4b0fba0a45e551969954.vfs.cloud9.ap-northeast-1.amazonaws.com/ Completed 302 Found in 386ms (ActiveRecord: 10.4ms)
######app/models/user.rb
ruby
1# アカウントを有効にする 2 def activate 3 # update_attribute(:activated, true) 4 # update_attribute(:activated_at, Time.zone.now) 5 update_columns(activated: true, activated_at: Time.zone.now) 6 end 7 8 # 有効化用のメールを送信する 9 def send_activation_email 10 UserMailer.account_activation(self).deliver_now 11 end 12 13 # パスワード再設定の属性を設定する 14 def create_reset_digest 15 self.reset_token = User.new_token 16 # update_attribute(:reset_digest, User.digest(reset_token)) 17 # update_attrinute(:reset_sent_at, Time.zone.now) 18 update_columns(reset_digest: User.digest(reset_token), reset_sent_at: Time.zone.now) 19 end 20 21 # パスワード再設定のメールを送信する 22 def send_password_reset_email 23 UserMailer.password_reset(self).deliver_now 24 end
######app/controllers/users_controller.rb
Ruby
1def create 2 @user = User.new(user_params) 3 if @user.save # => Validation 4 # Sucess 5 @user.send_activation_email 6 flash[:info] = "アカウントを有効化する為のメールを送信いたしました." 7 redirect_to root_url 8 # GET "/users/#{@user.id}" => show 9 else 10 # Failure 11 render 'new' 12 end 13 end
######app/mailers/user_mailer.rb
Ruby
1class UserMailer < ApplicationMailer 2 3 def account_activation(user) 4 5 @user = user 6 7 mail to: user.email, subject: "【Symphony】アカウントの有効化" 8 end 9 10 11 def password_reset(user) 12 13 @user = user 14 15 mail to: user.email, subject: "【Symphony】パスワードの再設定" 16 end 17end 18
######app/mailers/application_mailer.rb
Ruby
1class ApplicationMailer < ActionMailer::Base 2 default from: 'noreply@example.com' 3 layout 'mailer' 4end 5
######app/views/user_mailer/account_activation.html.erb
html
1<h1>Symphony</h1> 2 3<p><%= @user.name %>様,</p> 4 5<p>Symphonyに新規登録していただきありがとうございます.以下のリンクをクリックしアカウントの有効化をしてください.</p> 6 7 8<%= link_to "アカウント有効化", edit_account_activation_url(@user.activation_token, email: @user.email) %> 9
######app/views/user_mailer/account_activation.text.erb
html
1<%= @user.name %>様, 2 3Symphonyに新規登録していただきありがとうございます.以下のリンクをクリックしアカウントの有効化をしてください. 4 5<%= edit_account_activation_url(@user.activation_token, email: @user.email) %> 6
##追伸
ActionMailerでISO-2022-JP形式でメールを送信するに従って,ActionMailerに以下を追加することで,
Ruby
1default charset: 'ISO-2022-JP'
メールの英語部分は表示されるようになりました.日本語がまだ文字化けしてしまうので,どうかよろしくお願いします.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。