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

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

新規登録して質問してみよう
ただいま回答率
85.46%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

2571閲覧

mb_send_mail()でのエラー

tyningsass

総合スコア8

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/04/22 11:32

メール送信の独自関数を作り、内部でmb_send_mail()を使ったところ以下のようなエラーが出てしまいました。

mb_send_mail(): Unsupported transfer encoding "7bit &quot - 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}

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

エラーメッセージのとおり、
Content-Transfer-Encoding: 8bit
を試してみたらどうでしょう?

投稿2021/04/22 11:54

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問