• ベストアンサー
  • 暇なときにでも

メール送信プログラムの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); ?> 送信者名に名前を入れたいのですが、プログラムがまずいようで、何がいけないのでしょうか?

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

  • 回答数5
  • 閲覧数124
  • ありがとう数4

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

  • ベストアンサー
  • 回答No.2
  • galluda
  • ベストアンサー率35% (440/1242)

がると申します。 少々余談ちっくで恐縮ですが。PHPのバージョンはどのあたりでしょう? というのも、mb_send_mail関連、PHPの4.3.11と4.4.x系で、現在結構なトラブルが発生しているような感じなので。 もし該当するバージョンだとすると、もしかするとコーディングとはぜんぜん違うところに問題がある可能性があります。 もっとも、上記よりも下のバージョンですと、それはそれで十分に問題なのですが(苦笑

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

質問者からのお礼

お返事ありがとうございます。 使っているのはPHP5です。もしかすると根本的な問題?

関連するQ&A

  • phpのmb_send_mailで携帯のみ文字化け

    PHPのmb_send_mail関数でメールを送信しています。 メールサーバーはGoogleAppsのを使っています PHPのバージョンは5.1.6 --- 下記ソース --- //日本語と内部文字エンコードの指定 mb_language('ja'); mb_internal_encoding('UTF-8'); $parameter = "-f hoge@example.co.jp";//return_path設定 // ↓コレだと携帯では文字化けしないが、Gmailへ送信すると文字化け //$subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8")); $header = ""; $header .= "From: {$subject}<{$from}>"; $message = str_replace("\r", "", $message); $res = mb_send_mail($to, $subject, $message, $header, $parameter);

    • ベストアンサー
    • 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
  • mail()でメール送信で、特定のメーラーの受信のみ件名が文字化け

    PHPでメール配信プログラムを作っております。 配信テストを行なったのですが、特定のメーラーで件名が文字化けしてしまう現象に見舞われしてしまい、対処法を探しております。 ■テストメーラー 1、OutlookExpress 2、EdMax 3、Thunderbird ■ソース(一部抜粋) mb_language('Japanese'); mb_internal_encoding("SJIS"); //1 $subject = mb_encode_mimeheader($subject); //2 $subject = mb_convert_encoding($subject,"JIS","SJIS"); $send_body = mb_convert_encoding($send_body,"JIS","SJIS"); $header = "From: $fronmail.\n"; $header .= "Return-path: $return\n"; $header .= "Reply-To: $fronmail.\n"; //3 $header .= "Subject: $subject\n"; $header .= "Message-ID: {$MessageID}\n"; $header .= "MIME-Version: 1.0\n"; $header .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n"; $header .= "Content-Transfer-Encoding: 7bit\n"; //4 $header .= "Content-Transfer-Encoding: base64\n"; $header .= "X-Mailer:PHP/".phpversion(); $chk_mail = mail($to_email,$subject,$send_body,$header); ■設定値 $body = $subject = "日本語テスト"; メールアドレスはプロバイダなどが発行しているもの ■現象 ソースのままだと1、2は件名は文字化けせず、3は文字化け(???{????? ※?はひし形に囲まれた?です)します。 それぞれコメントアウトを外したり切り替えたりするのですが、1、2も件名が文字化けになったりします。 3は基本的にどのコメントアウトを有効にしても文字化けのままです。 $subjectに関しては、mail関数のものが優先のようでして、試しに空にしてみたのですが、件名も空のままでした。 何故この形式を取っているかというと、半角カナを使いたいが為でして、mb_send_mailだと半角カナが使えなかったような気がしてmailを使っております。 あと、popenで直接コマンドを打つという手もありそうですが、sendmailではなくpostfixなのですがpostfixでコマンドをという手段を探した方が良いのでしょうか? 出来ればmailを使って文字化けもしない方向を希望なのですが、それが駄目なら他の手段など誘導していただければ幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • PHP

その他の回答 (4)

  • 回答No.5

動作確認環境 WinXP Apache2 PHP5 ArGoSoftMailServer UTF-8 -------------------------------------- 貴方のスクリプトに mb_internal_encoding("UTF-8"); mb_language("Japanese") $to="自分のメルアド"; を付けた程度ですが、正常にメール送信しました。 mb_language()あたりかと。

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

  • 回答No.4
  • tecinfo
  • ベストアンサー率52% (32/61)

>試してみたんですけどあまり変わりませんでした。 その少し変化したエラーを載せてもらえないと、これ以上返答ができないです。。。(^^; 問題の解決には地道に一つずつエラーを消していくのが良いと思いますよ^^ >PHPのバージョン5でうまく動作している方はいらっしゃるのでしょうか? PHP5で動作します。 ただ、PHP5.0.5では件名が文字化けするというバグがあるようです。

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

  • 回答No.3
  • tecinfo
  • ベストアンサー率52% (32/61)

>Warning: mb_send_mail() [function.mb-send-mail]: SMTP server response: 504 <mail@xx.com>>: Sender address rejected: need fully-qualified address in C:\server\Apache2\htdocs\sale\mail.php on line 7 このエラーですが、『差出人のメールアドレスのホストが存在しない。』と怒られています。。 詳しくは以下を見てください。 http://www.ne.jp/asahi/net/sakuya/qa_ap/ap000025.htm なので、Fromをmail@xx.comではなく、実在するメールアドレスに書き換えてスクリプトを実行してみてると良いと思います。

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

質問者からのお礼

お返事ありがとうございます。差出人と宛先のアドレスをいくつか使えるものを試してみたんですけどあまり変わりませんでした。PHPのバージョン5でうまく動作している方はいらっしゃるのでしょうか?

  • 回答No.1
  • php504
  • ベストアンサー率42% (926/2160)

プログラム自体は問題ないと思います。 internal encodingとスクリプトの文字コードが違うのではないでしょうか。

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

質問者からのお礼

お返事ありがとうございます。 Warning: mb_send_mail() [function.mb-send-mail]: SMTP server response: 504 <mail@xx.com>>: Sender address rejected: need fully-qualified address in C:\server\Apache2\htdocs\sale\mail.php on line 7 internal encodingとファイルはEUC-JPでそろえているのですが、こんな感じのエラーが出ます。

関連するQ&A

  • メール送信フォーム

    mb_send_mail($to, $subject, $message, $from); でフォームのメール送信を作ったのですが、(エラーはでません)メールが送信されません。PHPのバージョンは4.23 HTMLでは <FORM METHOD="POST" ACTION="send.php" ENCTYPE="text/plain"> <input type="hidden" name="subject" value="質問"> </FORM> 省略 send.phpでは <?php mb_language("ja"); mb_send_mail($mail, $subject, $message, $from); ?> どこがおかしいのかわかりません? なにかヒントをいただけますか?

    • 締切済み
    • 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をコマンドプロンプトから実行しています。 メールが送信される事は確認しました。 使い勝手を少しでもよくするためにsubjectやfromの部分を コマンドプロンプトから引数で渡して実行してやりたいのですが どのようにすれば可能なのでしょうか? コマンドプロンプトの実行コマンド >php send_mail.php を >php send_mail.php subject from のようにしたいと考えてます。 <?php mb_language("japanese"); mb_internal_encoding("SJIS"); $to = "xxx@yyy.zzz"; $subject = "ここはsubject"; $body = "ここはbody"; $from = mb_encode_mimeheader("ここはfrom")."<xxx@yyy.zzz>";mb_send_mail($to,$subject,$body,"From:".$from); ?> 以上です、よろしくお願いします。

    • 締切済み
    • PHP
  • 自作メールフォームから送信するとメール内容がおかしくなる。

    ※PHP初心者なので、お手柔らかにお願いします。 自作メールフォームからメール送信すると、メールは送れるのですがメールの内容がおかしくなります。 現状は、件名のみ正しく表示され、差出人と本文の内容が空になります。 いろいろなサイトを見て試してみたのですが、どれも同じ結果で何が間違っているのかよくわからず困ってます。 メールの設定として下記を、 mb_language("Japanese"); mb_internal_encoding ("SJIS"); mb_detect_order("ASCII, JIS, UTF-8, EUC-JP, SJIS"); $MailTo = "送付先メールアドレス"; メール送信事態は下記ソースの通りです。 // エンコードして文字列を作成 $Name = mb_convert_encoding($Name, 'JIS', 'auto'); $Header = "From:" .mb_encode_mimeheader($Name). "<" .$Mail. ">\n"; $Subject = "=?iso-2022-jp?B?".base64_encode(mb_convert_encoding("お問い合わせ", 'JIS', 'auto')). "?="; $Message = mb_convert_encoding($Message, "JIS", "auto"); // メール送信処理 $Ret = mb_send_mail($MailTo, $Subject, $Message, $Header);

    • ベストアンサー
    • PHP
  • メール送信での文字化け

    お世話になります。 ホームページから入力ホームに記入してもらい、送信するとphpを使用してメールを送信するプログラムを書いていますが、メールを送信するとメールの内容に文字化けが発生してしまいます。 どうすればよいでしょうか? 入力ホームのページからutf-8で統一すれば文字化けなくメールを送信することができましたが、 仕様の条件としてshift-jisにするとありますので、入力ホームはshift-jisにしてあります。 どうか教授ください。 <?php mb_language('ja'); mb_internal_encoding('SJIS'); session_start(); require_once("includes/common.php"); if(!isset($_SESSION["name"]) && !isset($_SESSION["tel"]) && !isset($_SESSION["email"]) && !isset($_SESSION["ren"])){ header("Location: contact.php"); } else{ $name=$_SESSION["name"]; $furi=$_SESSION["furi"]; $tel=$_SESSION["tel"]; $email=$_SESSION["email"]; $ren=$_SESSION["ren"]; $ktel=$_SESSION["ktel"]; $fax=$_SESSION["fax"]; $iken=$_SESSION["iken"]; $to=$email; $subject="こんにちは"; $to_admin="aaaa@bbbbb"; $subject_admin="ccccc@dddddd"; $from= "From: ".mb_encode_mimeheader("AAAAAA")."<>"; $message=<<<MESSAGE。 Eメールアドレス:{$email} お名前:{$name} 様 フリガナ:{$furi}様 電話番号:{$tel} 携帯電話番号:{$ktel} FAX番号:{$fax} 連絡方法:{$ren} <ご意見、ご要望> {$iken} MESSAGE; $message.=<<<MESSAGE MESSAGE; mb_send_mail($to,$subject,$message,$from); mb_send_mail($to_admin,$subject_admin,$message_admin,$from); session_unset(); } ?>

    • ベストアンサー
    • PHP
  • メール送信について(初心者です)

    form1.phpで入力画面、form2.phpで確認画面、 send.php で <? function send_mail($mailto,$send_subject,$message){ $charcode = 'ISO-2022-JP'; $heady = "From: $mail\n"; $heady .= "To: $mailto\n"; $heady .= "X-Mailer: 'PHP/' . PHP_VERSION\n"; $heady .= "MIME-version: 1.0\n"; $heady .= "Content-Type: text/plain; charset=$charcode\n"; $heady .= "Content-Transfer-Encoding: 7bit\n"; $message = ""; $message .= "----------------------------------------\n"; $message .= "名前    :".$name."\n"; $message .= "メールアドレス:".$mail."\n"; $message .= "内容  :".$inq".\n"; $message .= "送信日時:" . $registDate . "\n"; $message .= "----------------------------------------\n"; $message .= "\n"; $message =mb_convert_encoding($message,"EUC"); } //メールアドレス $mailto = "***********"; $registDate = date("Y/m/d H:i:s"); //メールの題名部分 $mailsubject = "商問い合わせ"; $send_subject =mb_convert_encoding($mailsubject,"JIS","EUC"); $send_subject = "=?ISO-2022-JP?B?".base64_encode($send_subject)."?="; send_mail($mailto,$send_subject,$message); ?> とした上で、 送信完了を示すform3.phpにて、 <? include('send.php'); ?> と書きましたが、 この include('send.php'); があると、 画面に何も表示されません。 もちろん、メールも送信されません。 (サーバー上で確認) この流れでの間違い、指摘点など教えてください。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • メールのヘッダーで「ま」が文字化け

    お世話になります。 mb_send_mail関数で、メールの差出人、またはあて先で、「ま」の文字を使用すると、「~」(チルダ)に化けてしまいます。 動作環境は下記の通りです。  OS:Max OS X  PHP:4.4.1  ソースコードの文字コード:Shift_JIS 具体的なソースは下記の通りです。  mb_language("ja");  mb_internal_encoding('SJIS');  $mail_to = mb_encode_mimeheader('まみむめも',"JIS") . '<hoge@hogehoge>';  $mail_subject = 'まみむめも';  $mail_body = 'まみむめも';  $mail_header = "From: " . mb_encode_mimeheader('まみむめも',"JIS") . '<hoge@hogehoge>' . "\n";  mb_send_mail($mail_to,$mail_subject,$mail_body,$mail_header); これで送られるメールは下記の通りです。  差出人:~みむめも<hoge@hogehoge>  あて先:~みむめも<hoge@hogehoge>  件名 :~みむめも  本文 :まみむめも 本文は文字化けしないのですが、メールヘッダーに関与する項目で「ま」が「~」に文字化けしてしまいます。 お手数ですが、よろしくお願いいたします。

    • 締切済み
    • PHP
  • メールのFromに半角ピリオドが入るとエラーが・・・

    PEARのメール送信について教えてください。 現在PEARのMailと、mime.phpを使用してメール送信をするプログラムを組んでいるのですが、エンコードの仕方が悪いのかメールのFromに半角ピリオド、半角カンマなどが入るとエラーが出てしまいます。 以下がそのコードの主要部分ですが、対応策がありましたらご教授ください。よろしくお願いいたします。 --------------------------------------------------------- //ヘッダーのFromエンコード(問題の部分?) $headers['From'] = mb_encode_mimeheader(mb_convert_encoding( $mail_from_name , "ISO-2022-JP", "EUC-JP"))."<".$mail_from.">"; $objMail =& Mail::factory('sendmail'); $original = mb_internal_encoding(); $headers['Subject'] = mb_convert_encoding( $sbj , "ISO-2022-JP" , "EUC-JP" ); mb_internal_encoding("ISO-2022-JP"); $headers['Subject'] = mb_encode_mimeheader($headers['Subject'],"ISO-2022-JP"); mb_internal_encoding($original); $crlf = "\n"; $mime =& new Mail_mime($crlf); $mime->setHTMLBody($body); $build_param = array( "html_charset" => "EUC-JP", "text_charset" => "ISO-2022-JP", "head_charset" => "ISO-2022-JP", ); $body = $mime->get( $build_param ); $headers = $mime->headers($headers); $objMail =& Mail::factory('sendmail'); $result = $objMail->send( $mail_to , $headers , $body );

    • 締切済み
    • 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から携帯へメール送信

    いつもお世話になっております。 PHPから携帯電話へ"絵文字付き"でメールを送るプログラムを作成している のですが、『base64_encode』等を使用して絵文字の表示までは行う事がで きました。 ですが、本文が途中で途切れてしまうのです・・・。 PHP側は、 $to = mb_convert_encoding(mb_decode_mimeheader($structure->headers['from']), 'SJIS', 'ISO-2022-JP'); $subject = mb_convert_encoding(mb_decode_mimeheader($structure->headers['subject']), 'SJIS', 'ISO-2022-JP'); (省略)  ・  ・ $body = $structure->body; $body = preg_replace('/\s*>\s.*/', '', $body); $body = mb_convert_encoding($body, 'SJIS', 'ISO-2022-JP'); //---------------------------------- // base64_encode //---------------------------------- $subject = "=?shift_jis?B?" . base64_encode($subject) . "?="; $body = base64_encode($body); //---------------------------------- // ヘッダを作成 //---------------------------------- $headers = "From: test@mail.com\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-Type: text/plain; charset=Shift-JIS\n"; $headers .= "Content-Transfer-Encoding: base64"; //---------------------------------- // メール送信 //---------------------------------- $res = mail($to, $subject, $body, $headers);  ・  ・ (省略) 上記のように記述しています。 メールは送れます。絵文字も表示されます。ですが、本文が途中で途切れ てしまいます。 どなたかご教授をお願い致します。

    • ベストアンサー
    • PHP