[SwiftMailer] 주제를 조사하는 난장판.

카탈로그

  • 개시하다
  • 하고 싶은 일

  • 해본 일
  • 일단 소스를 확인할게요.
  • 부호화 부분의 문자 코드를 검사하다
  • 메시지 출처 읽기
  • 초지 로 돌아가다
  • 결론
  • 개시하다

  • PHP의 SwiftMailer 프로그램 라이브러리로 보낸 메일의 일부 주제가 엉망진창이 된 현상에 대해 문외한이 조사해 봤다
  • 남이 쓴 소스를 사용했기 때문에 처리 내용은 대략적으로만 파악할 수 있다
  • 인코딩은 ShiftJis
  • 제조업체는 Thunderbird
  • 하고 싶은 일

    ほげほげシステムふがふが機能ぴよぴよ確認結果(NG)라는 주제를 달았지만 받은 메일에서ほげほげシステムふがふが機能ぴよぴよ灰hネク惠比x?되다
    "巩巩"뒤에서 문자로 바뀌었기 때문에 이것을 고치고 싶습니다
    ※ 여기 주제는 예이기 때문에 적합

    해본 일


    일단 소스를 확인할게요.


    지정한 문자 코드 확인
    Swift::init(function () {
        Swift_DependencyContainer::getInstance()
            ->register('mime.qpheaderencoder')
            ->asAliasOf('mime.base64headerencoder');
    
        Swift_Preferences::getInstance()->setCharset('shift_jis');
    });
    
    메일을 보낼 때 주류는iso-2022-jp로 문자 코드를 보내는 것이지만 여기는shift_jis로 관철한다.
    ※ 이때 SwiftMailer라는 단어를 모르기 때문에 스위프트~라고 쓰여 있는 것이 무엇인지 모르고 분위기 속에서 읽고 있습니다.

    부호화 부분의 문자 코드를 검사하다


    예기
    ShiftJis에서'확실'은'8A6D'로 왠지 다른 인코딩으로 바뀌었다.
    예를 들어, utf8의 8A6D는 회색일 수 있습니다.
    시험해 보다
    낙서가 없는 사람(확인 결과)과 낙서가 없는 사람.를 입력합니다.
    JIS
    SJIS
    EUC
    UTF-8
    UTF-16
    글자
    334E
    8A6D
    B3CE
    E7A2BA
    78BA
    확정하다
    4727
    9446
    C7A7
    E8AA8D
    8A8D
    승인
    376B
    8C8B
    B7EB
    E7B590
    7D50
    결어
    324C
    89CA
    B2CC
    E69E9C
    679C
    과일.
    JIS
    SJIS
    EUC
    UTF-8
    UTF-16
    글자
    3325
    8A44
    B3A5
    E781B0
    7070
    먼지
    68
    68
    68
    68
    0068
    h
    48
    C8
    8EC8
    EFBE88
    FF88
    내장
    38
    B8
    8EB8
    EFBDB8
    FF78
    그램
    582A
    9CA8
    D8AA
    E683A0
    60E0
    혜택
    16
    16
    16
    16
    16
    4866
    94E4
    C8E6
    E6AF94
    6BD4
    비례하다
    78
    78
    78
    78
    x
    16
    16
    16
    16
    16
    ?
    만약 글자 번호가 틀리면 맞지 않는다
    결실
    관계성이 보이지 않기 때문에 문자 코드는 변화가 없는 것 같습니다.
    뭐, 주제의 중간부터 문자 코드가 바뀌고 코드가 깨지는 현상이 실제로 존재하는지는 모르겠지만...

    메시지 출처 읽기


    왜 처음엔 눈치채지 못했을까? 수수께끼지만 소스를 보니 뭔가 쓰여있는 것 같아서 그냥 봤는데
    시험해 보다
    1. 원본을 보고 싶은 메일 열기
    2. 오른쪽 위에 있는 버튼 그룹에서 [기타] > [소스 파일 보기(V)]를 선택합니다.
    3. 다른 창에서 원본 파일을 열고 "Subject:"문을 찾아 뒤에 참조
    "From:"과 "To:"뒤에 보면 보통 메일 주소와 발송자 등을 쓰지만 "Subject:"뒤에는 해시 값과 비슷한 단어=?shift_jis?라는 단어가 포함되어 있다.Subject가 주제입니다.
    왠지 시원한데 왠지 상관이 있는 것 같아=?shift_jis? 검색해 봤는데 Shift Jis로 일본어 주제를 인코딩한 것 같은데?
    "Subject:"뒤에 복사한 것을 디코딩하여 인터넷에 스크롤한 디코딩 도구로 디코딩한 결과 이미 깨진 테마를 발견합니다나왔어. 대충 그렇지?
    결실
    관계가 있을 만한 곳을 찾지 못하다

    초지 로 돌아가다


    처음의 소스를 다시 뜯어볼게요.
    Swift::init(function () {
        Swift_DependencyContainer::getInstance()
            ->register('mime.qpheaderencoder')
            ->asAliasOf('mime.base64headerencoder');
    
        Swift_Preferences::getInstance()->setCharset('shift_jis');
    });
    
    문자 코드를 잠시 잊으려는 일은 원본 코드를 이해해 보고 스와프를 조사하기로 했다.
    시험해 보다
    보통Swift 치면 iOS 앱을 만드는 데 도움이 될 것 같은 정보가 나올 것 같아서'Swift php 메일'같은 걸로 검색해보니 Swift Mailer라는 프로그램 라이브러리가 있는 것 같아요.
    그렇군요. "Swift Mailer Subject 난장판"과 함께 찾아보니 재밌는 기사가 나왔습니다symfony1.일본어로'SwiftMailer'(iso-2022-jp) 4개 대응
    뭐랄까, Subject 길이면 코드가 깨질 것 같아.구글로 보면 이전 버전의 스위프트 Mailer에서도 긴 일본어가 부호화될 수 있다는 소식이 있었다.
    이런 거.정말?
    그러므로 주제를 가지고 실험을 진행한다
    이것이 바로
    이렇게 됐어요.
    결실
    결과 확인(NG)
    보완 시스템 후낫 기능 회색 h 혜비x?
    ×
    루프 확인 결과(NG)
    루프 확인 결과(NG)

    제가 당신의 이름을 쓰게 해 주십시오. 당신의 이름과 차이가 많지 않습니다
    작은 사랑, 작은 사랑, 작은 사랑, 작은 사랑, 작은 사랑, 작은 사랑, 작은 사랑, 작은 사랑, 작은 사랑
    ×
    사랑해, 사랑해, 사랑해, 사랑해, 사랑해, 사랑해, 사랑해, 사랑해, 사랑해, 사랑해, 사랑해.
    에비오 능성어 초밥 능성어 능성어 능성어 능성어 능성어 능성어 능성어 능성어 능성어 능성어 능성어 능성어 능성어 능성어 능성어 능성어 능성어
    ×
    aaaaabbbbbcccccdddddeeeee
    aaaaabbbbbcccccdddH(H(X(X(X(X(X(
    ×
    aaaaabbbbbccc...zzzzz
    aaaaabbbbbccc...zzzzz

    결실
  • 전각 일본어
  • 18번째 문자
  • 로 정상적으로 표시
    반각 일본어
  • 36번째 문자로 정상적으로 표시
  • 전각 영문 자모
  • 18번째 문자
  • 로 정상적으로 표시
  • 반각 영문 자모
  • 36자 이상이어도 정상적으로 표시(130자 확인)
  • 결론


    다음 중 임의로 대응할 수 있다
  • 단축 테마
  • 주제는 반각 영어
  • SwiftMailer 이외의 방법으로 메일 발송
  • 이렇게 되면 긴 일본어 주제가 될 수 있어요.아니면'여기 잘못 없나요?'뭐가 있으면 알려주세요!

    좋은 웹페이지 즐겨찾기