Моджибаке в электронных письмах, отправленных с почтой PHP ()
В настоящее время я работаю для японского клиента, у которого есть проблема с получением электронного письма, отправленного через его контактную форму, созданную на PHP.
После расследования выясняется, что анти-спам почтового сервера срабатывает каждый раз из-за проблемы, которая стала моей любимой мозолью за последние несколько месяцев: mojibake.
X-Spam-Status: Yes, score=9.6 required=7.0 tests=FROM_ILLEGAL_CHARS,
HTML_MESSAGE,HTML_MIME_NO_HTML_TAG,MIME_HTML_ONLY,MISSING_MIMEOLE,RDNS_NONE,
SUBJECT_NEEDS_ENCODING,SUBJ_ILLEGAL_CHARS autolearn=no version=3.2.5
X-Spam-Report:
* 4.0 FROM_ILLEGAL_CHARS From: has too many raw illegal characters
* 1.5 SUBJ_ILLEGAL_CHARS Subject: has too many raw illegal characters
* 0.0 HTML_MESSAGE BODY: HTML included in message
* 1.7 MIME_HTML_ONLY BODY: Message only has text/html MIME parts
* 1.3 SUBJECT_NEEDS_ENCODING SUBJECT_NEEDS_ENCODING
* 1.1 HTML_MIME_NO_HTML_TAG HTML-only message, but there is no HTML tag
* 0.0 MISSING_MIMEOLE Message has X-MSMail-Priority, but no X-MimeOLE
* 0.1 RDNS_NONE Delivered to trusted network by a host with no rDNS
Это даже при том, что:
- кодировка формы установлена в utf-8
- кодировка скрипта установлена в utf-8
- заголовок почты установлен в кодировку utf-8 и Base64 для Content-Transfer-Encoding
Я также пытался использовать библиотеку neitanod toUTF8, но она ничего не изменила, я все еще получаю то, что выглядит как UTF-8 с принудительным кодированием на Latin1
X-Antivirus: avast (VPS 18071604)
X-Antivirus-Status: Clean
Return-Path: <ap-50728@example.com>
X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on
vts18.digitalink.ne.jp
X-Spam-Level: ******
X-Spam-Status: No, score=6.2 required=7.0 tests=AWL,HTML_MESSAGE,
HTML_MIME_NO_HTML_TAG,MIME_HTML_ONLY,MISSING_SUBJECT,RDNS_NONE,
SUBJ_ILLEGAL_CHARS autolearn=no version=3.2.5
X-Original-To: xxx@example.com
Delivered-To: xxx@example.com
Received: from vts18.digitalink.ne.jp (unknown [127.0.0.1])
by vts18.digitalink.ne.jp (Postfix) with ESMTP id C38AD11069044
for <xxx@example.com>; Tue, 17 Jul 2018 07:23:43 +0000 (UTC)
Received: from www.cosmetic-aida.jp (unknown [182.93.127.172])
by vts18.digitalink.ne.jp (Postfix) with ESMTP
for <xxx@example.com>; Tue, 17 Jul 2018 07:23:43 +0000 (UTC)
X-Alpha-Mail-Premier: web2008
Received: by example.com (Postfix, from userid 48)
id 8072F95D0EF1; Tue, 17 Jul 2018 16:23:46 +0900 (JST)
To: xxx@example.com
Subject: =?UTF-8?B?æååãã¡ã¼ã«?=
From: webmaster@example.com
Reply-To: webmaster@example.com
MIME-Version: 1.0
X-Mailer: PHP/5.3.3
Content-type: text/html; charset=UTF-8
Message-Id: <20180717072346.8072F95D0EF1@www.cosmetic-aida.jp>
Date: Tue, 17 Jul 2018 16:23:46 +0900 (JST)
ãä¸äººæ®ããã§ããææã¾ã§å¤ç«ããçããã«ã¯ãã©ããªãã¨ãå¿ããããããã®ã§ãããããéºåæ´çå°éä¼ç¤¾ãç«ã¡ä¸ãããå¤ç«æ»ããé¿ããããã®åçºã«ãåãçµãåç°å¤ªä¸ããã«èãã¾ããã
Что касается кода, который я использую для создания этого, вот он
<?php
header('Content-type: text/plain; charset=utf-8');
error_reporting(E_ALL);
ini_set('mbstring.internal_encoding','UTF-8')
$msg = " 一人暮らしでも、最期まで孤立せず生きるには、どんなことを心がけたらよいのでしょうか。遺品整理専門会社を立ち上げ、「孤立死」を避けるための啓発にも取り組む吉田太一さんに聞きました。\r\n
";
$myHeaders = 'From: webmaster@example.com' . "\r\n";
$myHeaders .= 'Reply-To: webmaster@example.com' . "\r\n";
$myHeaders .= 'MIME-Version: 1.0'. "\r\n";
$myHeaders .= 'X-Mailer: PHP/' . phpversion(). "\r\n";
$myHeaders .= 'Content-type: text/html; charset=UTF-8'. "\r\n";
$mailOK = (mail(
"xxx@example.com",
"=?UTF-8?B?"."文字化けメール"."?=",
$msg,
$myHeaders
)) ? "Mail sent" : "Error sending mail";
echo $mailOK;
Я преследую не ту проблему? Для тех из вас, кто привык посылать символы не латинского алфавита, как вы справляетесь с этим?
[РЕДАКТИРОВАТЬ] Добавлен полный сырой электронной почты и сценарий, используемый для его создания