メール送信の独自関数を作り、内部でmb_send_mail()
を使ったところ以下のようなエラーが出てしまいました。
mb_send_mail(): Unsupported transfer encoding "7bit " - will be regarded as 8bit;
試したこと
base64_encode
で、$header_str
をエンコードしました。エラーは出なくなりましたが、エンコードについてあまり理解していないため、これで良いのかがわかりません。おそらく間違っています。
ソースコード
mb_send_mail()
単体ではこのようなエラーは出ません。いかに、独自関数のコードを載せますので、どこが不適切かご教授いただけると幸いです。
php
1function setHeader(&$array, $key, $value) 2{ 3 $array[$key] = isset($array[$key]) ? $array[$key] : $value; 4} 5 6function mbutfSendMail($to, $subject, $body, $header = null, $add_params = null) 7{ 8 $default_address = 'info@example.com'; 9 mb_language('Japanese'); 10 mb_internal_encoding('UTF-8'); 11 setHeader($header, 'Content-Transfer-Encoding', '7bit'); 12 setHeader($header, 'Content-Type', 'text/plain; charset=UTF-8'); 13 setHeader($header, 'From', $default_address); 14 setHeader($header, 'Sender', $header['From']); 15 setHeader($header, 'Return-Path', $header['From']); 16 setHeader($header, 'Reply-To', $header['From']); 17 setHeader($header, 'Organization', mb_encode_mimeheader('○○株式会社')); 18 setHeader($header, 'X-Sender', $header['From']); 19 setHeader($header, 'X-Mailer', 'Postfix/2.6.6'); 20 setHeader($header, 'X-Priority', '3'); 21 22 array_walk($header, function ($_val, $_key) use (&$header_str) { 23 $header_str .= sprintf("%s: %s \r\n", trim($_key), trim($_val)); 24 }); 25 $result = true; 26 $tos = explode(',', $to); 27 foreach ($tos as $aTo) { 28 if (!mb_send_mail($aTo, $subject, $body, $header_str, $add_params)) { 29 $result = false; 30 } 31 } 32 return ($result); 33}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。