rails tutorial 11장당 빠질 것

보내는 메일이 인코딩되어 링크를 밟지 않습니다.



가입시 name에 일본어 넣기



rails의 로그를 보면


http://localhost:3000/account_activations/AOSiSUDhma-B1bwZe3Wd_g/edit?email=3Dhogehoge%40gmail.com=0D

쿼리의 email에 수수께끼의 "3D"가 붙어 있다.
다른 곳에서 수수께끼의 0D와 3D,

로그에서이 링크를 밟으려고하면
User.find_by(email: '[email protected]')

를 탐사해 버려 root로 날아간다.

quoted-printable





Content-Transfer-Encoding: quoted-printable로 인해
= = 3D로 변환됩니다.

메일 본문에 일본어가 있으면 7bit 문자로 변환할 수 없기 때문에,
Content-Transfer-Encoding: quoted-printable이 등장한다.
Content-Transfer-Encoding: quoted-printabl
는 8bit 문자를 7bit 문자로 변환하여 인코딩합니다.

What does 3D mean in this html email?
quoted-printable

quoted-printabl이 디코딩되기 전에 url을 밟고 있기 때문에 올바른 링크로 날지 않습니다.

해결책



프로덕션 환경에서는 제대로 디코딩 된 링크를 밟기 때문에 해결책이라고는 말하지 않지만 일단

mail-iso-2022-jp 사용



group :development, :test do
       ・
       ・
       ・
  gem 'mail-iso-2022-jp'
end

bundle install하고

application_mailer.rb
class ApplicationMailer < ActionMailer::Base
  default from: '[email protected]',
  charset: 'ISO-2022-JP'
  layout 'mailer'
end

마지막으로



프로덕션 환경에서는 제대로 디코드 해 주므로, charset 지정은 바꾸지 않고 ok입니다.

참고
일본어 메일의 구조

매일 정진

좋은 웹페이지 즐겨찾기