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

このQ&Aのポイント
  • メール送信関数を作成しましたが、日本語で表示すると送信エラーになります。
  • 日本語を含むメール送信者の指定について、エラーが発生する問題があります。
  • メール送信者を英語のみにすることで正常に送信できます。エンコードはSJISです。
回答を見る
  • ベストアンサー

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

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

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

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

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

haven3
質問者

お礼

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

その他の回答 (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
  • メール送信プログラムの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
  • 中国語(GB2312)のメール送信方法

    下記の方法でEmailを送信しようとしているのですが、中国語の文字が「?」または激しく文字化けしてしまいます。 送信元のファイルはUTF-8です。 mb_internal_encoding("GB2312"); $to = "to@test.com"; $from_name = mb_convert_encoding("中国語名","GB2312","AUTO"); $from_name = mb_encode_mimeheader("中国語名","GB2312","B"); $subject = mb_convert_encoding("中国語題名","GB2312","AUTO"); $subject = mb_encode_mimeheader("中国語題名","GB2312","B"); $headers.="Content-type: text/plain; charset=GB2312\r\n"; $headers.="Content-Transfer-Encoding:8bit\r\n"; $headers.="From: ".$from_name."<from@test.com>\r\n"; $headers.="Reply-To: ".$from_name."<from@test.com>"; $body = mb_convert_encoding("中国語本文","GB2312","AUTO"); mail($to,$subject,$body,$headers); 上記方法で日本語メールを送信した場合、GB2312をISO-2022-jpに変更しただけで文字化けもなく送信できました。 中国語の場合は何か特別な処置が必要なのでしょうか。 どなたかご存知の方教えてください。

    • 締切済み
    • PHP
  • PHPのメール送信でエラーが発生します。

    PHPでメール送信プログラムを組んだのですが、 エラーが発生してメールが送信できません。 いろいろ試したのですが、解決方法が見いだせなかったため、 書き込みをいたしました。 以前、XPで開発をしていたときは、メール送信ができたと思ったのですが。。 環境は以下の通りです。 WindowsVista PHP5.2.5 Apache2.2.6 melon1.62 実行したプログラムは以下の通りです。 $to = "abc@yahoo.co.jp"; $from = "abc@yahoo.co.jp"; $subject = "タイトル"; $message = "メッセージ"; $header = "From: $from"; mb_send_mail($to, $subject, $message, $header); abc@yahoo.co.jpは、実際には自分のヤフーアドレスで入力しました。 エラーは、melonのコンソールに、 421 temporary sender lookup fail と表示されます。 よろしくお願いいたします。

    • ベストアンサー
    • 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でメール送信をしようとしています。 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
  • PHPのmail関数で送信者を設定できません

    // 表題 $subject = $_POST['news_title']; // 本文 $message = ' <html> <head> <title>'.$_POST['news_title'].'</title> </head> <body> '.$_POST['textarea_id'].' </body> </html> '; // HTML メールを送信するには Content-type ヘッダが必須 $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; // 追加のヘッダ $headers .= 'To: '.$user_name.'<'.$email.'>'. "\r\n"; //$headers .= $_POST['news_title'] . "\r\n"; $headers .= 'From: 姓名 <myname@mymail.com>' . "\r\n"; // 送信する if(mail($to, $subject, $message, $headers)){$mes .= $email.'にメールを送信しました。 ';}else{$mes .= $email.'にメールを送信する際にエラーが発生しました。 ';} (後略) のようなコードになっていますが。$headersでFrom:を設定したのに、受信するメールには、送信者として、なになに@box450.bluehost.comが表示されます。どうやって正しく送信者を設定できるのでしょうか 因みにapacheのhttpd.confやPHPのphp.iniを変更できません。 わかる方がいらっしゃいましたら、ご回答をよろしくお願いします。

    • ベストアンサー
    • 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
  • sendmailで複数アドレスに送信するも2件までしか送信出来ない

    会員向けメール通信システムを作成しています。(けしてSPAMではありません。) PerlCGIによりSendMail送信させますが、次のようなコードで(一部省略しています。) # =================================================== $MAILTO="xxx\@xxxx.com;ooo\@oooo.com"; $mail_to = mimeencode($MAILTO); $mail_from = mimeencode($from); $mail_subject = mimeencode($subject); $m_header = <<END; Bcc: $mail_to From: $mail_from<$mail> Subject: $mail_subject Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP END # sendmailで送信 open(MAIL, "| $SENDMAIL -t -f $mail"); print MAIL $m_header, $m_body; close MAIL; # =================================================== で表記のように $MAILTOが2件までなら送信が出来ますが "xxx\@xxxx.com;ooo\@oooo.com"; ではなく "xxx\@xxxx.com;ooo\@oooo.com;aaa@aaa.jp"; の様に3件以上になると送信されません。 なにが原因であるかと、対応策を教えて下さい。

    • ベストアンサー
    • Perl
  • 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

専門家に質問してみよう