• ベストアンサー
  • すぐに回答を!

メール送信者の日本語指定について

メール送信関数を作成いたしました。 しかし、メールの送信者を日本語で表示しようとすると、送信エラーになります。 下記がコードになりますが、お気づきの点がありましたら、ご教示をお願いします。 また、「全日空信用カードサービスセンター」を取っ払って、英語のみの表記でしたら、正常に送信できます。※エンコードはSJISです。 //mail $mail_to = "**@yahoo.com"; $mail_from = "***@yahoo.com"; $subject_register = "お問い合わせ"; $title = "ANA CARD 全日空信用カードサービスセンター "; $header_listing = "From:".$title; $headers1 = $header_listing."<".$mail_from.">"; $subject = "=?iso-2022-jp?B?".base64_encode($subject_register)."?="; ・・・・・・・・・ 省略 if (mail($mail_to,$subject,$body,$headers1)) { message("ありがとうございました。"); } else { message("送信エラー"); }

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数94
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2

さきほどは勘違い回答していましたね。すみません。 $headers1 = "From: =?iso-2022-jp?B?". base64_encode(mb_convert_encoding($title, 'ISO-2022-JP')). "?= <$mail_from>"; でどうでしょうか。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

$headers1 = "From: =?iso-2022-jp?B?". base64_encode($title). "?= <$mail_from>"; でいけました。ありがとうございます!!!!!!!!

関連するQ&A

  • メールの件名が文字化け

    こんにちは。メールの件名が文字化けしてしまいます。エンコードはutf-8です。 ファイルもutf-8で保存しております。 同じソースコードを使用していますが、とあるAサーバーでは文字化けしないのですが、 とあるBサーバーですと文字化けを起こしてしまいます。 (1)現象は下記の通りです。 (文字化けした件名) =?utf-8?B?44GK5ZWP44GE5ZCI44KP44Gb?= (文字化けしていない件名) お問い合わせ (2)ソースコードを抜粋します。 ini_set("mbstring.internal_encoding","UTF-8"); $title = "サービスセンター"; $subject_register = "お問い合わせ"; ・ ・ 省略 ・ ・ $headers1 = "From: =?utf-8?B?". base64_encode($title). "?= <$mail_from>"; $subject = "=?utf-8?B?".base64_encode($subject_register)."?="; ・ ・ 省略 ・ ・ mb_language("uni"); mb_send_mail($mail_to,$subject,$body,$headers1) サーバー環境の問題ですと、php.iniの設定で何か必要なのでしょうか? お気づきの点がありましたら、些細なことでも結構ですので、ご教示して 頂けると助かります。よろしくお願いいたします。

    • 締切済み
    • PHP
  • メール送信プログラムのFrom:について

    <?php $to="mail@xx.com"; $subject="php test"; $message="phpのテスト"; $header="From:". mb_encode_mimeheader("名前") . "<mail@xx.com>"; mb_send_mail($to, $subject, $message, $header); ?> 送信者名に名前を入れたいのですが、プログラムがまずいようで、何がいけないのでしょうか?

    • ベストアンサー
    • PHP
  • PHPでメールを送信するには

    PHP超初心者です。 参考本をもとにPHPでメールを送信するということにチャレンジしているのですが、次のような文章が出ます。 Warning: mb_send_mail() [function.mb-send-mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\Program Files\Apache Group\Apache2\htdocs\php10\mail.php on line 11 エラー:送信に失敗しました 参考本に書いてあるとおり、 php.iniのSMTP=localhost を自分が使っているoooooo@ocn.ne.jpに書き換え、sendmailには自分の別アドレスを記述したのですが。 11行目のエラーも何を指しているのかわかりません。 ご回答よろしくお願いします。 【mail.php】 <html> <head><title>mail.php</title></head> <body> <?php $address=$_POST['address']; $subject=$_POST['subject']; $message=$_POST['message']; $header="Content-Type:text/plain;charset=iso-2022-jp"; mb_language("Japanese"); if(mb_send_mail($address, $subject, mb_convert_encoding($message,"JIS","EUC-JP"),$header)){ print("送信完了しました。"); }else{ print("エラー:送信に失敗しました"); } ?> </body> </html> 【mail_form.html】 <html> <head><title>メールの送信</title></head> <body> <h2>メールの送信</h2> <form action="mail.php" method="post"> 宛先:<input type="text" name="address"><br /> 件名:<input type="text" name="subject"><br /> 本文:<br /><textarea name="message" rows="5" cols="30"></textarea><br /> <input type="submit" value="送信"> </form> </body> </html>

    • ベストアンサー
    • PHP

その他の回答 (1)

  • 回答No.1

文字コードをJISにしていないのが、エラーの原因ではないでしょうか。 $subject_register = mb_convert_encoding($subject_register, 'ISO-2022-JP'); $subject = "=?iso-2022-jp?B?".base64_encode($subject_register)."?="; としてもうまくいきませんか?

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • メール送信で文字化け

    メール送信で件名が文字化けしてしまいます。 カテゴリ内には同様の質問もあるようですが、 解決できないので、投稿しました。 以下のようなコードです。 $to= "aa@aa.aa"; $from= "bb@bb.bb"; $subject= "メール送信テスト"; $headers= "From:$from"; $subject = i18n_mime_header_encode(i18n_convert($subject, "JIS")); $name= $_POST["name"]; $sub= $_POST["sub"]; $body= $_POST["body"]; $message="$name \n $sub \n $body \n"; if(mail($to, $subject, $message,$headers)){ echo "送信完了"; }else{ echo "送信エラー"; } ちなみに、 $subject= base64_encode($subject); とかもやってみたけど駄目でした。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpメール送信

    <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-S"> <title>お問い合わせフォーム</title> </head> <body> <?php //お問い合わせタイトル、詳細のセット $title = htmlspecialchars($_POST['title'], ENT_QUOTES); $message = htmlspecialchars($_POST['message'], ENT_QUOTES); mb_language('ja'); mb_internal_encoding('UTFS'); $name = '自動送信’; $email = '<僕のアドレス>'; $header = 'From: '. mb_encode_mimeheader($name) . '<' . $email .'>'; $result = mb_send_mail("<僕のアドレス>", $title, $message, $header); if ($result){  echo '■お問い合わせ内容を担当者に送信しました。’; } else {  echo '■担当者への送信に失敗しました。'; } ?> </body> </html> 何故かエラーになります。原因を教えてください

    • ベストアンサー
    • PHP
  • メール送信

    現在独学でPHPの勉強をしており、行き詰まってしまいここで質問をさせて頂きました。 行き詰まった内容ですがphpでメール送信のスクリプトを書いたのですが エラーが出てしまい送れません。 こちらが私が書いたスクリプトになります。 <html> <head><title>mail.php</title></head> <body> <?php $address = $_POST["address"]; $subject = $_POST["subject"]; $message = $_POST["message"]; $header = "Content-Type: text/plain;charset=iso-2022-jp"; mb_language("Japanese"); if(mb_send_mail($address, $subject, mb_convert_encoding($message, "JIS", "EUC-JP"), $header)){ print("送信完了しました。"); }else{ print("エラー:送信に失敗しました"); } ?> </body> </html> エラーの内容ですが、 Fatal error: Call to undefined function mb_language() in C:~となっております。mb_languageが使えないとの表示が出てくるのですが、 色々な本などを調べてもこれを使ってる所もありなにが問題なのか分かりません。 php.iniでの設定(mbstring.internal_encoding = EUC-JP、extension=php_mbstring.dll)の ; などは外してみたりしてるのですが どうにも分かりません。 どなたかお分かりになるかたがいましたら是非教えて頂けないでしょうか。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • smtpでメール送信

    いつもお世話になっております。 mail()、mb_send_mail() が使用できないため、smtp から 直接メール送信をしようと考えております。 (なぜ、mail()、mb_send_mail() が使用できないのかはわかりません。) // 件名 $subject = mb_convert_encoding($subject, "JIS", "EUC-JP"); $subject = '=?iso-2022-jp?B?' . base64_encode($subject) . '?='; // 本文 $msg = mb_convert_encoding($msg, "JIS", "EUC-JP"); // 送信 $fp = fsockopen('localhost', 25, $err_str, $err_no, 5); $header = "From: " . $from . "\r\n"; $header .= "To: " . $to . "\r\n"; $header .= "Reply-To: " . $from . "\r\n"; $header .= "Subject: " . $subject . "\r\n"; $header .= "Mime-Version: 1.0\r\n"; $header .= "Content-Type: Text/Plain; charset=iso-2022-jp\r\n"; $header .= "Content-Transfer-Encoding: 7bit\r\n"; fputs($fp, "HELO " . $smtp . "\r\n" ); fputs($fp, "MAIL FROM:" . $from . "\r\n"); fputs($fp, "RCPT TO:" . $to . "\r\n"); fputs($fp, "DATA \r\n"); fputs($fp, $header . $msg . "\r\n.\r\n"); fputs($fp, "QUIT \r\n"); 上記のように書きました。 一回目は送信できるのですが、二回目以降が送信できません。 サーバを再起動するとまた送信できるようになるのですが、 二回目以降はやはり送信できません。 何か原因が考えられますでしょうか。 ご教示よろしくお願いいたします。

    • 締切済み
    • PHP
  • phpのメール送信

    ホームページにメールフォームを作りたいのですが、 送信できなくて困っています。 ソースは次の通りです。 <?php echo "<html>"; echo "<head>"; echo "<title>メールフォーム(送信処理)</title>"; echo "</head>"; echo "<body>"; mb_language("japanese"); mb_internal_encoding("UTF-8"); $to = "アドレスA"; $subject = "件名"; $from = "アドレスB"; $header = "From: ". $from; //本文格納 $mailbody = "■お名前:" . $_post["name"] ."\n"; $mailbody .= "■内容:" . $_post["sentaku"] ."\n"; if(mb_send_mail($to, $subject, $mailbody, $header)){ echo "送信しました。"; }else{ echo "送信できませんでした。"; } echo "</body>"; echo "</html>"; ?> またif文の日本語が文字化けしてしまいます。 メール送信できて、文字化けもないようにしたいです。 よろしくお願いします。

    • 締切済み
    • PHP
  • Gmailへのメール送信で文字化け

    PHPでフォームメールの作っているのですが、Gmailで送信したメールを受け取ると□□□□□というように文字化けが起こっていまいます。 アウトルック、ホットメールなどは大丈夫なのですが、グーグルのGmailだけ駄目なようです。なぜ文字化けするのでしょうか? mb_language("Ja"); $header = "From: reminder@aaa.com\r\n"; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-Type: text/plain;charset=ISO-2022-JP\r\n"; $header .= "Content-Transfer-Encoding: base64"; $to = "aaa@gmail.com"; $subject = "送信テスト"; $body = "本文テスト本文テスト"; $subject = base64_encode($subject); $subject = mb_convert_encoding($subject,"ISO-2022-JP"); $subject = "=?ISO-2022-JP?B?" . $subject . "=?="; $body = base64_encode($body); $body = mb_convert_encoding($body,"ISO-2022-JP"); $success = @mail($to,$subject,$body,$header); if($success) print "成功"; else print "失敗";

    • ベストアンサー
    • PHP
  • メールフォームからのメールが届いていない

    <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>お問い合わせフォーム</title> </head> <body> <?php //お問い合わせタイトル、詳細のセット $title = htmlspecialchars($_POST['title'], ENT_QUOTES); $message = htmlspecialchars($_POST['message'], ENT_QUOTES); //日本語(UTF-8)の指定 mb_language('ja'); mb_internal_encoding('UTF-8'); // Fromアドレスの設定(自動送信<@hb.tp1.jp>) $name = '自動送信'; $email = '<@hb.tp1.jp>'; $header = 'From: '. mb_encode_mimeheader($name) . '<' . $email .'>'; // メール送信 $result = mb_send_mail("<@hb.tp1.jp>", $title, $message, $header); //メール送信の確認 if ($result){ echo '■お問い合わせ内容を担当者に送信しました。'; } else { echo '■担当者への送信に失敗しました。'; } ?> </body> </html> 何故でしょうか??

    • ベストアンサー
    • PHP
  • PHPからのHTMLメール送信

    PHP覚えはじめの初心者です。 下記のソースで自分宛にメールを送信すると、 会社のメールアドレスではHTMLメールとして受取れるのですが、 その他のメールアドレス(DION、ロリポップ、infoseek)、などでは 普通のテキストメールとしてソースが出てしまいます。 他にも何かヘッダーに付加したほうがいいのでしょうか? コツがありましたらご教授ください。 よろしくお願い致します。 <?php /* 送信先 */ $to = "hoge@hoge.com"; /* 題名 */ $subject = "HTML MAIL"; /* メッセージ */ $message = ' <html> <head> <title>テスト</title> </head> <body> <h1>テスト</h1> </body> </html> '; /* ヘッダー */ $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-2022-jp\r\n"; $headers .= "Content-Transfer-Encoding: 7bit\r\n"; $headers .= "From: hoge@hoge.com\r\n"; mail($to, $subject, $message, $headers); ?>

    • 締切済み
    • PHP
  • 指定した時間にPHPプログラムを実施

    以下、メール送信のプログラムがあるのですが、 ATコマンドのようなものを使用して、指定された時間にPHPのメール送信プログラムが動作するようにしたいと考えています。無理でしょうか。 ## `at -t $seireki$tuki$niti$jikan` とかで可能?? 指定した時間にPHPプログラムを実施する良い方法があれば、ご教示頂けければと思います。ぼやけた質問で申し訳ありません。 <? ## PHP Version5のため、変数の事前定義。 $email = $_POST{'email'}; $word1 = $_POST{'word1'}; $word2 = $_POST{'word2'}; $word3 = $_POST{'word3'}; $seireki = $_POST{'seireki'}; $tuki = $_POST{'tuki'}; $niti = $_POST{'niti'}; $jikan = $_POST{'jikan'}; ## 以下、メール送信 $mail_to = "$email"; $mail_from = "test@test.co.jp"; $mail_bcc = "test@test.co.jp"; $mail_from_title = mb_encode_mimeheader("TEST___")."<".$mail_from.">"; $mail_xmailer = "PHP-" . phpversion(); $mail_subject = mb_encode_mimeheader("TEST"); $mail_body = $mail_body . "\n"; $mail_body = $mail_body . "\n"; $mail_body = $mail_body . "\n"; $mail_encode = "EUC-JP"; $mail_body = mb_convert_encoding($mail_body, $mail_encode); $mail_header_array["X-Mailer"] = $mail_xmailer; $mail_header_array["From"] = $mail_from_title; $mail_header_array["Bcc"] = $mail_bcc; foreach($mail_header_array as $key => $value){ $mail_header .= $key . ": " . $value . "\r\n"; } $mail_result = @mb_send_mail($mail_to, $mail_subject, $mail_body, $mail_header, "-f" . $mail_from); if(!$mail_result){ die("メールを送信できません\n"); } ?>

    • ベストアンサー
    • PHP
  • フォームメールでタイトルが文字化けする

    こちらのサイトにある http://www.sapphirus.biz/php/sformmail/ フォームメール1というものを利用して確認画面つきのフォームを作成しております。 こちらのサイトでダウンロードしたものをデフォルトで利用すると ユーザーに対する自動返信メールに sformmail.php内の設定項目に記述したメールアドレスが メールの送信者の所に表示されて返信されてきます。 / 設定 $mail_to = 'XXXXXXXXXXXX'; // フォームデータを受け取るメールアドレス $mail_subject = 'S.B.フォームメール送信'; // 受け取る時のSubject(件名) $reply_subject = 'S.B.フォームメールより自動返信です'; // 送信者へ自動返信のSubject(件名) $mail_bcc = ''; // BCCで受け取りが必要な場合は設定 $internal_enc = 'UTF-8'; // 文字エンコード 送信者のところにメールアドレスだけでなく、 日本語名も追加して自動返信メールを使いたかったため、 sformmail.php内の // メール自動返信 if ($_SESSION['autoReply'] && $_SESSION['email'] && is_file('reply.php')) { $reply_header = "From:{$mail_to}\n"; if ($mail_bcc) $reply_header .= "Bcc: {$mail_bcc}\n"; $reply_header .= "X-Mailer: {$x_mailer}"; include ('reply.php'); $reply_message = html_entity_decode($reply_message, ENT_QUOTES, $internal_enc); $reply_message = str_replace("<br />", "", $reply_message); $reply_message = str_replace("\t", "\n", $reply_message); $reply_message = mb_convert_encoding($reply_message, $internal_enc, 'AUTO'); mb_send_mail($mail_from, $reply_subject, $reply_message, $reply_header); } にある $reply_header = "From:{$mail_to}\n";を $reply_header = "From:{YYYYYYY}{$mail_to}\n"; と変更しました。 結果、Gメールでメールを受け取ると送信者欄にYYYYYYYとメールアドレスが表示されるのですが メーラーによってYYYYYYYの部分が文字化けしてしまいます。 色々と調べておりましたら文字コードが $internal_enc = 'UTF-8'; // 文字エンコード という設定がありますが $reply_header = "From:{YYYYYYY}{$mail_to}\n"; に反映できていないのが問題と見受けられますが 修正方法がわかりません。 当方CGIの知識がないため、ご教示いただければ幸いです。

    • 締切済み
    • PHP