• ベストアンサー

メール差出人日本語表記にバグが付加される

define( 'CNST_MAIL_REPLY' , 'aaa@aaa.co.jp' ); define( 'CNST_MAIL_FROM_ADDR' , 'aaa@aaa.co.jp' ); define( 'CNST_MAIL_ERROR' , 'aaa@aaa.co.jp' ); define( 'CNST_MAIL_FROM_NAME' , '差出人'); define( 'CNST_MAIL_TO_ADDR' , 'aaa@aaa.co.jp' ); //* メールアドレス設定 *// $mail_header = ""; if ( CNST_MAIL_REPLY != "") { if ( $mail_header != "") { $mail_header .= "\n"; } $mail_header .= "Reply-To: ".CNST_MAIL_REPLY; } $from = "From: "; if ( CNST_MAIL_FROM_NAME != "") { $from .= "\"".CNST_MAIL_FROM_NAME."\""; } if ( CNST_MAIL_FROM_ADDR != "") { $from .= " <".CNST_MAIL_FROM_ADDR.">"; } if ( $mail_header != "") { $mail_header .= "\n"; } $mail_header .= $from; if( CNST_MAIL_ERROR != "") { $errors_to = "Errors-To: "; $errors_to .= CNST_MAIL_ERROR; if( $mail_header != "") { $mail_header .= "\n"; } $mail_header .= $errors_to; $sub_parm = "-f".CNST_MAIL_ERROR; 以上のメールを送信すると 差出人の箇所に\(B というバグが入ってしまいます・・。 バグの解決法のアドバイスお願いします。 ちなみに、メールサーバによりけりで、 バグが入る場合と入らない場合があります。 よろしくお願いします。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

なんというか・・・ 前の返答文書は全然参考にならないのでしょうか? JIS変換して36文字で分割して、MIME変換した 例示を差し上げていますが・・・。 文字長制限などいろいろあるので、単に変換すれば いいというものでもありませんのでご注意ください。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kaz33
  • ベストアンサー率60% (20/33)
回答No.1

JISに変換して、mb_encode_mimeheader は使用していますか? その変換したものを\"\"で囲む。

y_maehara
質問者

お礼

返信大変おくれて申し訳ありません。 mb_encode_mimeheader を使用したのですが、解決できず・・ バグの原因はサブジェクトを二重に $mail_subject = mb_convert_encoding($mail_subject, "ISO-2022-JP","SJIS"); で、定義していたことが原因でした。 それをはずすとバグが消えました。 アドバイスありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • メールの文字化け

    define( 'CNST_MAIL_REPLY' , 'aaa@aaa.co.jp' ); define( 'CNST_MAIL_FROM_ADDR' , 'aaa@aaa.co.jp' ); define( 'CNST_MAIL_ERROR' , 'aaa@aaa.co.jp' ); define( 'CNST_MAIL_FROM_NAME' , 'ここが、差出人で、日本語表示したいんですが文字化け' ); define( 'CNST_MAIL_TO_ADDR' , 'aaa@aaa.co.jp' ); //* メールアドレス設定 *// $mail_header = ""; if ( CNST_MAIL_REPLY != "") { if ( $mail_header != "") { $mail_header .= "\n"; } $mail_header .= "Reply-To: ".CNST_MAIL_REPLY; } $from = "From: "; if ( CNST_MAIL_FROM_NAME != "") { $from .= "\"".CNST_MAIL_FROM_NAME."\""; } if ( CNST_MAIL_FROM_ADDR != "") { $from .= " <".CNST_MAIL_FROM_ADDR.">"; } if ( $mail_header != "") { $mail_header .= "\n"; } $mail_header .= $from; if( CNST_MAIL_ERROR != "") { $errors_to = "Errors-To: "; $errors_to .= CNST_MAIL_ERROR; if( $mail_header != "") { $mail_header .= "\n"; } $mail_header .= $errors_to; $sub_parm = "-f".CNST_MAIL_ERROR; $mail_subject = mb_convert_encoding($mail_subject, "ISO-2022-JP","SJIS"); $mail_text = mb_convert_encoding($mail_text, "ISO-2022-JP","SJIS"); $mail_header = mb_convert_encoding($mail_header,"ISO-2022-JP","SJIS"); // メール送信処理 mb_language("Japanese"); mb_send_mail($to, $mail_subject, $mail_text, $mail_header, $sub_parm); 上のメール送信プログラムなんですが、 差出人の名前が文字化けしてしまいます。 質問のしかたがよくわからなかったのでプログラムをのせました。 アドバイス宜しくお願いします。

    • ベストアンサー
    • PHP
  • メール送信の設定について

    PHPでメール送信をしようとしています。 mb_internal_encoding("utf-8"); mb_language("japanese"); $from = "admin@testsv.com"; $reply_to = "reply@exp.co.jp"; $to = "custom@hoge.co.jp"; $cc = "test@foo.co.jp"; $bcc = "test2@bar.co.jp"; $subject = "例の件です"; $header = "From:".$from."\n"; $header .= "Cc: ".$cc."\n"; $header .= "Bcc: ".$bcc; $header .= "Reply-To: ".$reply_to."\n"; $header .= "X-Mailer: myphpMail ". phpversion(). "\n"; $contents = "氏名 :".$name."\n"; $contents .= "お問い合わせ内容 :".$inquiry."\n"; mb_send_mail($to,$subject,$contents,$header); としています。 ところが、ヘッダーのX-Amavis-Alert:の項目でBAD HEADER, Duplicate header field: "To"と表示されています。 toが複数あるわけではないのに表示されていて原因が分かりません。 教えてください。 お願いします。

    • ベストアンサー
    • 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
  • sendmailのFROMに日本語を使う

    CGIからsedmailを呼び出してメールを送信しています。 その時に差出人の部分の日本語が文字化けしてしまいます。 そこで&jcode'convertでjisに変えたのですが、今度は CGIがサーバーエラーになってしまいます。 どうすればよいでしょうか。 スクリプトはこんな感じです。 ----------------------------------------------- $from = '両国'; $subject = 'テスト'; &jcode'convert(*from, 'jis'); &jcode'convert(*subject, 'jis'); &jcode'convert(*msg, 'jis'); $errno = 1 unless open(MAIL, "| /usr/lib/sendmail -t"); return 0 if $errno; print MAIL "To: $MailTo\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n"; print MAIL "Content-Type: text/plain;\n\n"; print MAIL "$msg\n"; $errno = 2 unless close(MAIL); return 0 if $errno;

    • ベストアンサー
    • Perl
  • メール送信者の日本語指定について

    メール送信関数を作成いたしました。 しかし、メールの送信者を日本語で表示しようとすると、送信エラーになります。 下記がコードになりますが、お気づきの点がありましたら、ご教示をお願いします。 また、「全日空信用カードサービスセンター」を取っ払って、英語のみの表記でしたら、正常に送信できます。※エンコードは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("送信エラー"); }

    • ベストアンサー
    • PHP
  • メールの内容が文字化けします・・・

    <? function sendmail($to,$from,$from_name,$title,$message){ /* EUCコードへのエンコーディング */ $to = mb_convert_encoding($to , "EUC-JP","EUC-JP,UTF-8,SHIFT-JIS,ASCII,JIS"); $from = mb_convert_encoding($from , "EUC-JP","EUC-JP,UTF-8,SHIFT-JIS,ASCII,JIS"); $title = mb_convert_encoding($title , "EUC-JP","EUC-JP,UTF-8,SHIFT-JIS,ASCII,JIS"); $message = mb_convert_encoding($message , "EUC-JP","EUC-JP,UTF-8,SHIFT-JIS,ASCII,JIS"); /* 改行コード変換(CR+LFへ変換) */ $to = ereg_replace("\r", "", $to); $to = ereg_replace("\n", "\r\n", $to); $from = ereg_replace("\r", "", $from); $from = ereg_replace("\n", "\r\n", $from); $from_name = ereg_replace("\r", "", $from_name); $from_name = ereg_replace("\n", "\r\n", $from_name); $title = ereg_replace("\r", "", $title); $title = ereg_replace("\n", "\r\n", $title); $message = ereg_replace("\r", "", $message); $message = ereg_replace("\n", "\r\n", $message); /* メールヘッダ生成 */ $header = "From: ".$from_name." <".$from.">\n"; $header .= "Reply-To: ".$from_name." <".$from.">\n"; /* メール本文生成 */ $message = mb_convert_kana($message,"KV"); /* 送信メッセージ言語設定 */ mb_language("Japanese"); /* メール送信処理 */ $rcd = mb_send_mail($to,$title,$message,$header); return $rcd; } ?> 何が原因か分からないのです・・・。 教えていただければ嬉しいですm(__)m

    • ベストアンサー
    • PHP
  • 携帯からメールを送ると文字化け・・・

    PCからメールを送ると正常に表示されてるのに、携帯からだと内容が化けてしまうという現象になってしまいました・・・。 function sendmail($to,$from,$from_name,$title,$message){ /* JISコードへのエンコーディング */ $to = mb_convert_encoding($to, "JIS","EUCJP,UTF-8,SHIFT-JIS,ASCII,SJIS,ISO-2022-JP"); $from = mb_convert_encoding($from, "JIS","EUC-JP,UTF-8,SHIFT-JIS,ASCII,SJIS,ISO-2022-JP"); $title = mb_convert_encoding($title , "JIS","EUC-JP,UTF-8,SHIFT-JIS,ASCII,SJIS,ISO-2022-JP"); $message = mb_convert_encoding($message , "JIS","EUC-JP,UTF-8,SHIFT-JIS,ASCII,SJIS,ISO-2022-JP"); /* 改行コード変換(CR+LFへ変換) */ $to = ereg_replace("\r", "", $to); $to = ereg_replace("\n", "\r\n", $to); $from = ereg_replace("\r", "", $from); $from = ereg_replace("\n", "\r\n", $from); $from_name = ereg_replace("\r", "", $from_name); $from_name = ereg_replace("\n", "\r\n", $from_name); $title = ereg_replace("\r", "", $title); $title = ereg_replace("\n", "\r\n", $title); $message = ereg_replace("\r", "", $message); $message = ereg_replace("\n", "\r\n", $message); /* メールヘッダ生成 */ $header = "From: ".$from_name." <".$from.">\n"; $header .= "Reply-To: ".$from_name." <".$from.">\n"; /* メール本文生成 */ $message = mb_convert_kana($message,"KV"); /* 送信メッセージ言語設定 */ mb_language("Japanese"); /* メール送信処理 */ $rcd = mb_send_mail($to,$title,$message,$header); 分かる方いらっしゃいましたら、よろしくお願いしますm(__)m

    • ベストアンサー
    • PHP
  • メール送信(返信含)に関する質問

    KOMONETさんのサイトから、ショッピングカート(Type 2 / PHP4.2.0)をDLしました。 http://www.komonet.ne.jp/script.htm 「komoshop.php」を少し改造して使いたいと思っていますが、送信において わからない所があるので、教えて下さい。 +-----------komoshop.phpの118行目付近からの抜粋-------------+ if($taskrate){ $msg .= "消費税率 = $taskrate %\n"; } $sum = number_format($sum); $msg .= "合計 = $sum\n"; $msg .= "お名前 = $name\n"; if($pcode){ $msg .= "郵便番号 = $pcode\n"; } $msg .= "ご住所 = $addr\n"; if($tel){ $msg .= "電話番号 = $tel\n"; } $msg .= "E-mail = $email\n"; if($comment){ $msg .= "一言どうぞ = $comment\n"; } ★ $msg .= gmdate("Y/m/d H:i:s",time()+9*3600)."\n"; ★ $msg .= getenv("REMOTE_ADDR") . "\n"; ★ $msg .= @gethostbyaddr(getenv("REMOTE_ADDR")) . "\n"; if(mb_send_mail($to, $subject, $msg, $header)){ echo "<P>発注メールは無事送信されました。有難うございました。</P>\n"; (中略) echo "<INPUT TYPE=SUBMIT VALUE=クッキー削除></FORM></P>\n"; if($remail > 0){ $header = "From: $to"; $msg2 = "==ご注文内容===========================\n"; $msg2 .= $msg; $msg2 .= "=======================================\n"; $msg2 .= "$message\n"; mb_send_mail($email, $subject2, $msg2, $header); } +-----------------------------------------ここまで-------- それで、中程にある「★」の部分を追加したのですが、remail(お客の確認控えメール)にも、 送られてしまいます。これを、自分のところだけにするには、どうしたら良いのでしょうか。 どうか、よろしくお願いします。

    • ベストアンサー
    • PHP
  • ホームページから意見を送るsendmailのcgiスクリプト

    表題のようなスクリプトを使っているのですが、 普通は特に問題ないのですが、「http://」などから始まる URLのみを書き込んで送ると、空メール(何も記載されない)となって 届いてしまいます。どこがおかしいのかわかりません。 以下のようなスクリプトです。 @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name,$value) = split(/=/,$pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; &jcode'convert(*name,'sjis'); &jcode'convert(*value,'sjis'); if ($name eq 'to') { $to = $value; } if ($name eq 'from') { $from = $value; } if ($name eq 'subject') { $subject = $value; } if ($name eq 'body') { $body = $value; } } # cheack if ($from eq "") { $from = "unknown\@."; } if ($from eq " ") { $from = "unknown\@."; } # send mail &jcode'convert(*from,'jis'); &jcode'convert(*subject,'jis'); &jcode'convert(*body,'jis'); if (!(open(MAIL,"| $sendmail -t"))) { &error('システムエラー','メールの送信に失敗しました。'); } print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n"; print MAIL "Content-Type: text/plain; charset=iso-2022-jp\n"; print MAIL "$body\n"; close(MAIL); # view html &jcode'convert(*from,'sjis'); &jcode'convert(*subject,'sjis'); &jcode'convert(*body,'sjis'); $body =~ s/\r\n/\r/g; $body =~ s/\n/\r/g; $body =~ s/\r/<BR>/g;

    • ベストアンサー
    • CGI
  • .mac の Mail の差出人表示について

     今までは Mail の差出人表示を abcdef<abcdef@mac.com>という ような感じで ハンドルネーム にしていたけれど AppleStore で 通販で 物を 買うために 本名を 入力しなおしたら Mail の差出人表示が 本名<abcdef@mac.com> というようになり いつも メールに 本名が 表示されるようになり 困っています^^;  登録自体は 本名でも かまわないのだけど 表示は ハンドルネームに するように できないでしょうか? .mac の Mail の 設定で 表示名を ハンドルネーム に したら エラーになりました

    • 締切済み
    • Mac
このQ&Aのポイント
  • ボタンの値をcsvファイルから取得した値へ変更できない問題について質問します。
  • グローバル変数などの問題かもしれませんが、具体的な解決方法が分かりません。
  • 読み込んだCSVファイルから値を取得し、ボタンの値に反映させたいのですが、反映されません。
回答を見る

専門家に質問してみよう