• ベストアンサー
  • 困ってます

PHPで外部SMTPサーバーを利用したメールの送信方法

PHPで外部SMTPサーバーを利用したメールの送信方法を調べています。 過去の事例からPEARを使用すれば良いことが分かりPEARをインストールしたのですが、 実行すると「$smtp = Mail::factory("smtp", $params);」の所で、 「Fatal error: Class 'Mail' not found in C:\Inetpub\wwwroot\Mail.php on line 14」と なってしまいます。 PEARのインストール後はサーバーの再起動は行っております。 ※環境 OS:WindowsXP Pro SP3 WebServer:IIS PHP:Ver.5.2.6 ※PEARのインストール状態 C:\Documents and Settings\horie>C:\php\pear list PHP Warning: Module 'mbstring' already loaded in Unknown on line 0 INSTALLED PACKAGES, CHANNEL PEAR.PHP.NET: ========================================= PACKAGE VERSION STATE Archive_Tar 1.3.2 stable Console_Getopt 1.2.3 stable PEAR 1.7.1 stable Structures_Graph 1.0.2 stable ※Mail.php <?php $params["host"] = "smtp.mail.yahoo.co.jp"; $params["auth"] = true; $params["username"] = "AAA-BBB"; $params["password"] = "9999"; $sender = "aaa**@yahoo.co.jp"; $recipient = "bbb**@yahoo.co.jp"; $subject = "TEST"; $subject = mb_convert_encoding($subject, "jis", "sjis"); $subject = mb_encode_mimeheader($subject, "jis"); $message = "テストメッセージ"; $message = mb_convert_encoding($message, "jis", "sjis"); require_once 'Mail.php'; $smtp = Mail::factory("smtp", $params); if (PEAR::isError($smtp)) die($smtp->getMessage()); $headers['From'] = $sender; $headers['Subject'] = $subject; $headers['MIME-Version'] = "1.0"; $headers['Content-Type'] = 'text/plain; charset="iso-2022-jp"'; $headers['Content-Transfer-Encoding'] = "8bit"; $headers['X-Mailer'] = "PHP PEAR/Mail(smtp)"; $error = $smtp->send($recipient, $headers, $message); if (PEAR::isError($error)) die($error->getMessage()); exit("メッセージを送信しました"); ?>

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

  • 回答数1
  • 閲覧数1340
  • ありがとう数1

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

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

>require_once 'Mail.php'; 自分がMail.phpなのに自分自身を呼んでるのですか? Mailクラスにfactory関数は宣言されていますか?

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

質問者からのお礼

ご回答ありがとうございます。 >>require_once 'Mail.php'; >自分がMail.phpなのに自分自身を呼んでるのですか? お恥ずかしい限りです。 SendMail.phpとしたら問題なく動作しました。 誠に申し訳ございません。

関連するQ&A

  • PEAR::Mail のシステム環境

    PEAR::Mailを使用しプロバイダのメールサーバ経由でPHPモジュールよりPC端末、携帯にメール送信できるようにしたいです。 OS:WindowsServer2003 Apache、PHP(PEAR導入済み)、Postgresql 現在OB25pという制度が各プロバイダで設定されており、個人メールサーバからメールが送信できない仕様になりました。 認証を行えば使えるということで、PEARの導入を考えました。 PEARを導入して、以下のプログラムで送信かけたのですがPC端末、携帯端末にも送信されない状態です。 $params["host"] = "smtp.mail.yahoo.co.jp"; $params["auth"] = true; $params["username"] = "username"; $params["password"] = "password"; $sender = "from@example.com"; $recipient = "to@example.org"; *メッセージ省略* require_once 'Mail.php'; $smtp = Mail::factory("smtp", $params); if (PEAR::isError($smtp)) die($smtp->getMessage()); $headers['From'] = $sender; $headers['Subject'] = $subject; $headers['Content-Transfer-Encoding'] = "8bit"; $headers['X-Mailer'] = "PHP PEAR/Mail(smtp)"; $smtp->send($recipient, $headers, $message); if (PEAR::isError($smtp)) die($smtp->getMessage()); exit("メッセージを送信しました"); ちなみにプロバイダはYahoo!BBです。 質問です。 ・上記のプログラムより直接Yahoo!BBのメールサーバに投げようとしているのですが問題ないでしょうか?自サーバよりWindowsコンポーネントのIIS(SMTP)経由の方がよろしいでしょうか?またその時の設定はどうするのでしょうか? ・自サーバにはDNSはたててない状態なのですが、問題ないでしょうか? 他に問題事項がございましたらご指摘願います。 長々とすみませんが、何卒よろしくお願いいたします。

    • 締切済み
    • PHP
  • pear:Mailを使用してのメールフォーム

    Mac OS X 10.7.2 PHPを使用して、メールフォームを作りたいのですが、以下を実行すると 【ソース】 <?php require_once "Mail.php"; $params = array( "host" => "smtp.gmail.com", "port" => 587, "auth" => true, "username" => "ユーザー", "password" => "パスワード" ); $mailObject = Mail::factory("smtp", $params); $recipients = "xxxx@gmail.com"; $headers = array( "To" => "xxxx@gmail.com", "From" => "xxxx@gmail.com", "Subject" => mb_encode_mimeheader("テストメール") ); $body = "日本語メールのテストです。"; $body = mb_convert_encoding($body, "ISO-2022-JP", "auto"); $mail = $mailObject -> send($recipients, $headers, $body); if (PEAR::isError($mail)) { echo("<p>" . $mail->getMessage() . "</p>"); } else { echo("<p>Message successfully sent!</p>"); } ?> 【エラー】 Fatal error: Call to undefined method PEAR_Error::send() in /home/u327035945/public_html/send.php on line 56 となってしまいます。 PHP、PEARのインストールをし、Pear::Mailのファイルを、上のソースファイルと同じフォルダにいれ、サーバーにあげました。 PHPを初めて挑戦したので、どこの時点に問題があるのかもわかりません、、、、 よろしくお願いします。

    • 締切済み
    • PHP
  • PHPでHTMLメールを送信、文字化けします。

    Mail/mime.php を利用してHTMLメールの送信をしようとしています。 試行錯誤をしているのですが、どうしても文字化けしてしまいます。 データベースから取得したデータをHTMLメールにして送信したいのですが、 このままでは、タイトルはきちんと送れていますが、本分が文字化けします。 何か抜けたり、設定が変だったりはありますでしょうか? ご教授お願いいたします。 以下にソースを記しています。 データベースとPHPのソースはどちらも【UTF-8】です。 /*-------------------ここから データベースより取得----------*/ $recipients //送信先 $sender //送信元 $Subject //タイトル $body //本文 /*--------------------ここまでデータベースより取得--------------*/ mb_language("japanese"); mb_internal_encoding("UTF-8"); require_once("Mail.php"); require_once("Mail/mime.php"); $params = array( "host" => "自ドメイン", "port" => 587, "auth" => true, "username" => "送信元アカウント", "password" => "********" ); $mailObject = Mail::factory("smtp", $params); $mimeObject = new Mail_Mime("\n"); $mimeObject -> setHTMLBody($body); $bodyParam = array( "head_charset" => "ISO-2022-JP", "html_charset" => "Shift_Jis" ); $body = $mimeObject -> get($bodyParam); $addHeaders = array( "To" => "$recipients", "From" => "$sender", "Subject" => mb_encode_mimeheader("$Subject") ); $headers = $mimeObject -> headers($addHeaders); $mailObject -> send($recipients, $headers, $body);

    • ベストアンサー
    • PHP
  • SMTP接続でのPEARメール送信の差出人がsoftbankのみ表示さ

    SMTP接続でのPEARメール送信の差出人がsoftbankのみ表示されなくて困っております。 require_once("Mail.php"); require_once("Mail/mimeDecode.php"); mb_internal_encoding('UTF-8'); mb_language("ja"); $params = array( "host" => "***", "port" => 587, "auth" => true, "username" => "***", "password" => "***" ); $mailObject = Mail::factory("smtp", $params); $internal = 'utf-8'; $input = 'utf-8'; $target = 'ISO-2022-JP'; $recipients = "hoge@hoge.com"; $from_name = "日本語"; $from_name = mb_convert_encoding($from_name,$input,mb_detect_encoding($from_name)); $subject = "テスト"; $subject = mb_convert_encoding($subject,$input,mb_detect_encoding($subject)); $headers = array( "To" => $from, "From" => mb_encode_mimeheader($from_name,$target)."<***>", "Subject" => mb_encode_mimeheader($subject,$target), "Return-Path" => mb_encode_mimeheader($subject,$target)."<***>", ); $body = "テスト"; $body = mb_convert_encoding($body,$target,mb_detect_encoding($body)); $mailObject -> send($recipients, $headers, $body); なかなか説明が難しいので、手っ取り早くコードを書き出しましたが、 このphpファイルを使ってメールを送信しますと、 PCメール、WEBメール(hotmail)、携帯メール(DOCOMO,AU,SOFTBANK) 全て文字化けなく送信出来ている状況です。 上記のうち、差出人が受信側で表示されるのはDOCOMO以外全てだと思うのですが、 (もちろん携帯は機種によっては例外的に表示されないのもあるかと) 他のPCメールからは日本語の差出人が確認できるSOFTBANK機種でメールを 受信しますと、(差出人が設定されていない場合と同じ)メールアドレスのみが 表示されてしまう状態です。 前述のphpファイルは、SOFTBANK以外の差出人設定可能なPC,WEB,AUは 全て差出人の設定が確認できております。その問題のSOFTBANKも、差出人が 設定されないだけで、件名本文ともに文字化けせず、正常に受信が出来ています。 ネットで色々と探してみましたが、同様の状況が確認できず、 どなたかお力添えいただけましたら幸いかと思い、質問した次第です。 どうかよろしくお願いいたします。

    • 締切済み
    • 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から携帯電話へ"絵文字付き"でメールを送るプログラムを作成している のですが、『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
  • PHPでのメール送信方法教えてください。m(><)m

    php と SQLite でデータ入力画面を作成しています。 保存ボタンを押すと、データベースにデータが保存され、 同時にメール送信も行える機能はないでしょうか? 下記のようなソースを作成してみたのですが、 $to = 'aaa@aa.aa.aa'; $subject = 'the subject'; $message = 'hello'; $headers = 'From: aaa@aa.aa.aa' . "\r\n" . 'Reply-To: aaa@aa.aaaaa' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); すると、下記のメッセージが出てきます。 Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Apache Group\Apache2\htdocs\*****\*****.php on line 327 初心者で申し訳ありません。 どこで引っかかっているかわかりません。 お教えいただければ幸いです。 どうぞよろしくお願いいたします。

    • 締切済み
    • 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
  • 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
  • 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