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

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

ただいまの
回答率

88.61%

メールで日本語を使用したい。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 231

arinc0

score 31

本人認証用のメールを作成しており、Railsチュートリアルでは英文だった為問題なかったのですが、
今回は日本語で本文を作ろうとしたところ、送信したメールが文字化けしており困っております。

エンコードの違いだということはわかるのですがどのように日本語対応すれば良いかわからず困っております。参照すべきサイトでも良いので教えていただけたらと思います。自分の調べ方が悪いのかうまく情報を見つけることができなかったのでどのように検索されたかも教えていただけると幸いです。

class UserMailer < ApplicationMailer

  #メソッドに対応するビューがメールのテンプレート
  def account_activation(user)
    @user = user
    mail to: user.email, subject: "Account activation"
  end
<h1>Instagram Clone App</h1>

<p>こんにちは、 <%= @user.name %>さん</p>

<p>
Instagramアカウントのセキュリティを確保するため、メールアドレスの認証を行ってください。
</p>

<%= link_to "メールアドレスを認証してください", edit_account_activation_url(@user.activation_token,
                                                    email: @user.email) %>
UserMailer#account_activation: processed outbound mail in 14.5ms
Sent mail to <メールアドレス> (7.6ms)
Date: Tue, 15 Oct 2019 07:52:24 +0000
From: noreply@example.com
To: <メールアドレス>
Message-ID: <5da57ab83af13_2d2f279c398945f0@ip-172-31-30-48.mail>
Subject: Account activation
Mime-Version: 1.0
Content-Type: multipart/alternative;
 boundary="--==_mimepart_5da57ab8399b0_2d2f279c39894433";
 charset=UTF-8
Content-Transfer-Encoding: 7bit


----==_mimepart_5da57ab8399b0_2d2f279c39894433
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: base64

DQrjgZPjgpPjgavjgaHjga/jgIFIaXJva2kgTWFzYWtp44GV44KTDQoNCklu
c3RhZ3JhbeOCouOCq+OCpuODs+ODiOOBruOCu+OCreODpeODquODhuOCo+OC
kueiuuS/neOBmeOCi+OBn+OCgeOAgQ0K5Lul5LiL44GuVVJM44KS44Kv44Oq
44OD44Kv44GX44CB44Oh44O844Or44Ki44OJ44Os44K544Gu6KqN6Ki844KS
6KGM44Gj44Gm44GP44Gg44GV44GE44CCDQoNCmh0dHBzOi8vZTljNDEwY2Ix


----==_mimepart_5da57ab8399b0_2d2f279c39894433
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: base64

PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCiAgPGhlYWQ+DQogICAgPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiIC8+DQogICAgPHN0eWxlPg0KICAgICAgLyogRW1h
aWwgc3R5bGVzIG5lZWQgdG8gYmUgaW5saW5lICovDQogICAgPC9zdHlsZT4N
CiAgPC9oZWFkPg0KDQogIDxib2R5Pg0KICAgIDxoMT5JbnN0YWdyYW0gQ2xv
bmUgQXBwPC9oMT4NCg0KPHA+44GT44KT44Gr44Gh44Gv44CBIEhpcm9raSBN



----==_mimepart_5da57ab8399b0_2d2f279c39894433--

Redirected to https://e9c410cb1fc1485f8b4d0a858cd3b9c8.vfs.cloud9.us-east-2.amazonaws.com/
Completed 302 Found in 646ms (ActiveRecord: 9.3ms)

railsチュートリアルの時はサーバーを立ち上げたターミナル内で本文が確認できたような記憶があるので何か設定が必要なのかと考えております。ご確認お願い致します。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • winterboum

    2019/10/15 17:18

    どのように書いたか見せて下さい

    キャンセル

  • arinc0

    2019/10/15 18:27

    しばらく調べていた結果なのですが、日本語部分を全てテンプレートから削除するとチュートリアルの時と同じように本文の内容がターミナルから参照ができており、日本語を含めると文字化けしてしまうというのが確認できました。
     そもそも日本語を使用したいという自分の認識が少しずれていてテンプレートの中で日本語を含めてプレビューでは正確に表記されていたので、実際に日本語でメールは作れていてターミナル内で正確に参照できていなかっただけという結果に至ったのですが、その認識は合っていますでしょうか?

    キャンセル

回答 1

checkベストアンサー

0

特におかしなことはしていないですね。

メールのcharset=UTF-8で
encodeされている本文をdecodeすると UTF-8 になっており、
中身の html にも
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> があり。
これで文字化けしているというのが不思議です。

ですから
確認した方法では文字化けていた
ということかと思います。
じっさいにメールを送ってみて確認してみて下さい。

###
もしかして

----==_mimepart_5da57ab8399b0_2d2f279c39894433
Content-Type: text/plain;
charset=UTF-8
Content-Transfer-Encoding: base64

DQrjgZPjgpPjgavjgaHjga/jgIFIaXJva2kgTWFzYWtp44GV44KTDQoNCklu
c3RhZ3JhbeOCouOCq+OCpuODs+ODiOOBruOCu+OCreODpeODquODhuOCo+OC
kueiuuS/neOBmeOCi+OBn+OCgeOAgQ0K5Lul5LiL44GuVVJM44KS44Kv44Oq
44OD44Kv44GX44CB44Oh44O844Or44Ki44OJ44Os44K544Gu6KqN6Ki844KS

となっているのを文字化けしたと思いましたか?
これは英数字以外が入ってきた時に行われる encode という処理で、文字化けではないです

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/10/15 19:35

    encodeされている部分が文字化けしてしまっているのだと思っていました。
    わかりやすく教えていただきありがとうございます!

    キャンセル

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

  • ただいまの回答率 88.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る