• ベストアンサー

PHPからメールを送る@さくらインターネット

YUTAKUN007の回答

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

ソースには問題無いはずですがEUCで保存されてますよね? 考えられる問題は ・その他の引数が入っていない(通常は必要なものは補完されますので必要ありませんが)  念のため指定してはどうでしょうか。  どこかのMLリストでReturnpathヘッダーを付けたら送信できた。という  スレッドを見たことがあります。  サーバー側で差出人なしのメールを破棄しているかもしれません。  通常はphp.ini内のsendmail_from欄を参照し  NULLであればroot@サーバー名 になるはずです。 ・マルチバイト関数が有効になっていない  PHPのconfigure時に--enable-mbstring が有効になっていないと利用できないはずです。  phpinfo()関数を実行してmbstring項目の該当値がenableになっていなければいけません。  もっとも、この場合はエラーを吐くはずなんですが・・・ ・php.iniの設定でsendmailへのpath設定されていない  あり得ないとは思いますがsendmailへのpathが設定されていない可能性があります。  コレばかりはサーバー管理者しか設定できませんので管理者に連絡するしかありません。  通常は自動認識してくれるはずなんですが・・・ この時もエラーを吐いてくれるはず。 もしマルチバイト系が利用できないのであれば自分で適切にエンコーディングして mail()を使って送信するしかないですね。 mb_send_mail()は自動的にエンコーディングを行いmail()に投げてくれる関数ですから。 なにかエラーメッセージは表示されていませんか? 念のためmb_send_mailを実行したときにTrueが返ってきているか 確認してください。 <?php if(mb_language('Japanese')){ echo "languageはJapaneseに設定されました。<BR>"; }else{ echo "languageはJapaneseに設定できませんでした<BR>"; } if(mb_send_mail('xxx@xxx.xx.xx','やぁ','届いた?')){ echo "正常に処理されました。<BR>"; }else{ echo "正常に処理されませんでした。<BR>"; } ?> MTAのログなんかも確認できると良いのですが レンタルサーバーでは無理かもしれません。。。

xojan
質問者

お礼

試行錯誤してみた結果、驚くべきことに、 さくらインターネットによって設定されていた、php.iniのsendmailへのパスの初期値が、間違っていました。 ご迷惑をおかけしました。どうもありがとうございました。

関連するQ&A

  • さくらインターネットでメール受信をトリガーにphpプログラムを起動させ

    さくらインターネットでメール受信をトリガーにphpプログラムを起動させたい。 postmaster@xxx.sakura.ne.jp宛てにメールを送信し、 それをトリガーにtest.phpを実行させたいと思っています。 以下のサイトを参考にいろいろと試したのですが、行き詰っています。 ============================ http://www.cpa-lab.com/tech/0143 http://faq.sakuratan.com/wiki/wiki.cgi?%a5%e1%a1%bc%a5%eb#i35 ============================ 上記のサイトを参考に、 .mailfilterとtest.phpを以下のディレクトリにアップロードしました。 ============================ .mailfilter /home/xxx/MailBox/postmaster/.mailfilter test.php /home/xxx/www/test.php ============================ 各ファイルの中身は以下のとおりです。 .mailfilter ============================ to "| /home/xxx/www/test.php" ============================ test.php ============================ #!/usr/local/php-5.2.11/bin/php <?php mb_language("Japanese"); mb_internal_encoding("SHIFT-JIS"); if (mb_send_mail("xxxxxxx@softbank.ne.jp", "テストメール", "これはテストです。", "From: postmaster@xxx.sakura.ne.jp")) { echo "メールが送信されました。"; } else { echo "メールの送信に失敗しました。"; } ?> ============================ test.phpに直接アクセスするとxxxxxxx@softbank.ne.jp宛てにメールが届くのは確認が出来ているのですが、 携帯メールでpostmaster@xxx.sakura.ne.jpにメールを送っても、xxxxxxx@softbank.ne.jp宛てにメールが返ってきません。 何が原因でこうなっているのか、おわかりになる方はいらっしゃいませんか? あと気になっているのがtest.phpの『#!/usr/local/php-5.2.11/bin/php』の部分なのですが、 当方『php-5.2.11-Win32.zip』をダウンロードしてインストールしたので参考サイトの『5.2.6』を『5.2.11』に変更しているのですが考え方が根本的に間違っていたりはしますでしょうか? 以上、お手数ですがご教授の程よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでメール送信を行う場合、SSLで送信できないものでしょうか?

    PHPでいわゆる問い合わせフォームをつくっています。 SSLの設定していますので、次のような感じです。 https://www.xxx.com/1.php https://www.xxx.com/2.php(内容確認) https://www.xxx.com/3.php(送信完了) 最後の送信完了部分で 管理者宛にメールを送信を行っています。 mb_send_mailを使っています。 この時、このメールはおそらく暗号化されてものではなく 平文でとんでいるんだと思います…。 これをPHPを使ってSSLで送信する方法ってないものでしょうか…。 もしあれば、ぜひソースでお教えいただけないでしょうか…… よろしくお願いします。 ※環境としてはPHP5.2.5 xreaのレンタルサーバーを利用しております…。

    • 締切済み
    • PHP
  • sendmail.phpとthanks.php

    についてです。 いま現在ホームページ作成の初心者で勉強中なのです。 sendmail.phpで作ったメール送信フォームに入力された、相手方のアドレスに確認メールを送信するフォームを作りたいのですが、 [いきなり始めるPHP]という書籍通りにphpスクリプトを入力しても、メールが送信されません。 サーバーはさくらレンタルサーバーさんです。 いちおう前記の書籍から自分なりにアレンジを加えているので、多少違うかも知れませんが、 わかる方がいらっしゃいましたら、ご教授願えますか? ちなみに、thanks.phpにはエラーなしでジャンプされて、sendmail.phpは問題なく作動し、サーバーにメールは届いています。 こちら側でメールを送信するときにメールが送信されないという事です。 ちなみに、プログラムは $mail_sub='アンケートを受け付けました。'; $mail_body= $nickname."様、\nアンケートご協力ありがとうございました。"; $mail_body=html_entity_decode($mail_body,ENT_QUOTES,"UTF-8"); $mail_head='From: 私のアドレスが入っています。'; mb_language('Japanese'); mb_internal_encoding("UTF-8"); mb_send_mail($mailto,$from_mail,$mail_sub,$mail_body,$mail_head); です。 一応格納された値は、ちゃんとリンク前のページから受け取っています。

  • PHPでのメール差出人名について

    PHPでのメール差出人名について PHPのmb_send_mailでメール送信プログラムを書いています。 メールは送信されるのですが、メーラーで確認すると 差出人名(送信者)がうまく表示出来ません。 具体的には、 『▲▲サイトより送信』と表示させたいのですが、 『▲▲サイトより送信@レンタルサーバのドメイン名』 と表示されてしまいます。 下記がソースになるのですが、有識者の方いらっしゃいましたら ご教授よろしくお願いします。 -------------------------------------------- //送信設定 mb_language("japanese"); mb_internal_encoding("euc-jp"); $from = mb_encode_mimeheader(mb_convert_encoding("▲▲サイトより送信","JIS","euc-jp")); $head = "From: {$from}" . "\r\n" . 'X-Mailer: PHP/' . phpversion(); //送信実行 mb_send_mail($mail_to, $title, $message, $head);

    • ベストアンサー
    • PHP
  • phpからメールを送信したいです。

    phpからメールを送信したいです。 やりたい事はそれだけですが、根本的によく分かっていないところがあり、その辺りを整理したいと思っています。 何分、概念をよく理解していないので、意味不明な事を書くかもしれませんが宜しくお願い致します。 CentOS7にアパッチとPHPをインストールしました。 WEBルート上に下記のtest_phpinfo.phpを配置し、 ブラウザから http://IPアドレス/test_phpinfo.php で呼び出すと、 phpinfoの情報が画面上に出ています。 次に、 WEBルート上に下記のtest_mb_send_mail.phpを配置し、 ブラウザから http://IPアドレス/test_mb_send_mail.php で呼び出すと、 (画面に出すものは何も書いていないので)真っ白な画面が出て、自分のアドレスにメールが届いて欲しいのですが届きません。 あと、具体的に何が必要なのかという事が分かりたいのですが、それとは別に幾つか質問があります。 phpのmb_send_mail関数自体にはメーラの機能はあるのですか?ないのですか? phpのエンジンと追加モジュールでメーラの機能があり、その設定が必要なのか? phpのmb_send_mail関数自体にはメーラの機能はなく、postfixなどのメールサーバーを仲介するだけなのか? メール送信に必要なのは何ですか? 普通にPCからメールを送る場合は、 サンダーバードとかOutlookといったメーラと、自分のメールアドレスが必要です。 自分のメールアドレスの情報として メールアドレス、パスワード、 IMAPかPOPサーバー名、ポート番号 接続の保護、認証方式 SMTPサーバー名、ポート番号 接続の保護、認証方式 が必要です。 phpのmb_send_mail関数からメールを送信する場合も同様にこれらが必要ですか? このサーバーでメールを管理したいわけではなく、ただメールを送りたいだけです。 それでもメーラのようなモノではなく、メールサーバーが必要ですか? 以上、宜しくお願い致します。 [test_phpinfo.php] <?php phpinfo(); ?> [test_phpinfo.php] [test_mb_send_mail.php] <?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); mb_send_mail("自分のアドレス", "件名", "本文", "From: from@example.com") ?> [test_mb_send_mail.php]

    • ベストアンサー
    • PHP
  • Q)PHPでメール送信について

    Q)PHPで外部のレンタルサーバーにメール送信したいのですが上手く 送信できません。 (現在の状況) ・OutlookExpress だと勿論okです。 ・社内のメールサーバー(ArGo Mail) にはLAN,及び外からも 送信できました。 (レンタルサーバーの状況) 1)メールサーバーのMTAとしてqmailを採用しています。 2)SMTP-AUTH Outlook Expressの設定(Ver.5.5 6.0) 3)POP before SMTP  となっていますが、1)は業者さんに自社サーバー内でテスト頂き、okでした。 ------------------------------------------------------------ となると、原因は (1)私のルーター設定の問題 (2)PHPで   2)SMTP-AUTH Outlook Expressの設定(Ver.5.5 6.0)   3)POP before SMTP を対応させるの何れか?ぐらいしか思いつかないのですが 私のレベルが低いのでどこから取り組んだらいいのかよく解りません、何方かご教授宜しくお願いいたします。 ------------------------------------------------------------ テストしたPHP <?PHP mb_language("Ja") ; mb_internal_encoding("shift-jis") ; $mailto ="hanako@aaa.bbb.cc"; $subject ="花子さん"; $content ="よろしくお願いします。"; $mailfrom "From:" .mb_encode_mimeheader("yorosiku") ."<taro@xxx.yyy.zz>"; mb_send_mail($mailto,$subject,$content,$mailfrom); ?> ------------------------------------------------------------ (環境) Windows xp(sp2) Apache(V2.0.58) PHP(V5.1.4)

    • ベストアンサー
    • PHP
  • PHP、PEARでのメール送信での送信確認

    メール送信フォームを書籍やサイトを参考に作成しています。 下記のスクリプトで送信に成功したのですが、このままでは 「送信に成功しました」とも「送信に失敗しました」とも表示されません。 どのようにしたら、そのようなメッセージが出せるのでしょうか? <?php require_once("Mail.php"); $params = array( "host" => "xxx.xxx.xx", "port" => 25, "auth" => false, "username" => "xxx@xxx.xxx.xx", "password" => "xxxxxxxxxx" ); $mailObject = Mail::factory("smtp", $params); $recipients = "xxx@xxx.xxx.xx"; $headers = array( "To" => "xxx@xxx.xxx.xx", "From" => "xxx@xxx.xxx.xx", "Subject" => "Test Mail" ); $body = "This is test mail"; $mailObject -> send($recipients, $headers, $body); ?> よろしくお願いします。

    • ベストアンサー
    • PHP
  • さくらインターネットでは動かないのでしょうか?

    昨夜、コチラに『レッツPHPさんの新着ブロガー設置について』の タイトルでご質問させていただきました者です。 必要にせまられて、あれからも自分で色々と調べてみたのですが 私が借りているさくらインターネットで動かすことは 出来ない状況です。 友人に頼んでロリポップで設置を試みたところ、 簡単に設置することが出来ました。 さくらインターネットのレンタルサーバーを利用して レッツPHPさんの新着ブロガーを設置する方法を 教えてもらえませんでしょうか。 どうか宜しくお願いしますm(_ _)m

    • 締切済み
    • PHP
  • mb_send_mailに関して

    環境:Windows2008 Server R2 64bit/php5.3.22 教えて下さい。 Windows2008 Server R2 64bit 環境にてPHPを動作させ、mb_send_mail()関数を使って メールを送信しようと考えています。 PHPも問題なく動き、mb_send_mail()関数用にphp.ini も以下のようにメンテナンスし、記述も 問題ないかと思われますが、メールの送信ができません。。。 64bitでは何か設定が違うのでしょうか? 教えて頂きたいと思います。 《php.ini》   [mail function]  For Win32 only.          ← 32bit only とわざわざ記述がある為、64bit ではNG?  http://php.net/smtp  SMTP = XXXXXX  http://php.net/smtp-port  smtp_port = 25  For Win32 only.  http://php.net/sendmail-from  sendmail_from = XXX@XXX.co.jp 《記述内容》  <?php  $mailto = "XXX@XXX.co.jp";  $subject = "掲示板";  $content = "新規投稿がありました。 ☆☆☆";  $mailfrom = "From:mail@colcoat.co.jp";  mb_language("ja");  mb_internal_encoding("UTF-8");  if(mb_send_mail($mailto,$subject,$content,$mailfrom)){  }else{   echo "送信できませんでした";  }  ?> よろしくお願いします。

    • ベストアンサー
    • PHP
  • さくらインターネットのレンタルサーバプラン

    サクラインターネットを利用しています レンタルサーバーなんですがプレミアムプランを契約していますがこれをライトプランに変更したいんですが無理なのでしょうか? どうすればいいのかが全然見つからなくて、、