カテゴリ | |
サマリ | ページを更新すると「pkwk_mail_notify(): Failed」と表示され、更新ができません。 |
バージョン | 1.4.6 |
投稿者 | tsuge |
状態 | 完了 |
投稿日 | |
下記の通りpukiwiki.ini.phpを設定しているのですが、
ページを更新すると「pkwk_mail_notify(): Failed」と表示され、更新ができません。
// Send mail per update of pages
$notify = 1;
// Send diff only
$notify_diff_only = 1;
// SMTP server (Windows only. Usually specified at php.ini)
$smtp_server = 'localhost';
// Mail recipient (To:) and sender (From:)
$notify_to = 'uaer@provider.ne.jp'; // To:
$notify_from = 'pukiwiki@mydomain.com'; // From:
- 取りあえず更新通知メールを諦めたら、更新そのものは出来るのですね?また、そのサーバは、PHPからメールが送信できる環境ですか? --
- その通りで更新・PHPからメール送信は可能です。 -- tsuge
- phpからsendmailへのパスは正しく設定しています。PHPがMUAとしてのsendmailコマンドにメールを引き継いだ後で、sendmailコマンドがローカルホストのSMTPサーバに渡そうとして失敗しているようです。phpからのメールは送信しましたと表示されるが、toには届かないです。
PukiWikiの問題ではなさそうです。どうも失礼しました -- tsuge
質問-2†
- 上記と同様にnotifyがFailしてしまいます。場違いの質問かもしれませんが、"PHPからメールの送信は可能"かどうかはいかにして確かめればよいのでしょうか。ちなみにOutlookからメールの送受信はできており、それをSMTPサーバとしてpukiwiki.ini.php内で指定しています。 -- pkwk初心者
回答-2†
- 利用者であれば当然に閲覧できる筈の仕様を読む。管理者に問い合わせる。phpinfoの出力を見て、mail送信に関する設定が適切に行われているか確認し、実際にmb_send_mail()を試してみる。Outlookから云々はあまり意味がありません。おそらく大抵の場合、そのように$smtp_serverを設定するのは誤りです。 --
- メール送信テストをこんな感じで作り、test6.phpにアクセスしてはいかがですか。
それはそうと、あなたの環境は・・・レンタルサーバー ? 自宅サーバー ? Linux ? Windows -- hirokasa
- ご丁寧にご検討ありがとうございます。環境はwindowsXPpro+php5+pukiwiki1.4.7+apacheです。smtpサーバが必要なのかと思いsendmailまねーるを導入し、test6.phpにアクセスしてみたのですが。。。"sendmail_from" not set in php.ini or custom "From:" header missing というエラーが出てきてしまいます。ちなみにC:windowsフォルダのphp.iniのsendmail_fromにはxxxx@yahoo.co.jp(xxxxはログイン名)にしています。まずtest6.phpをクリアにしたいのですが、、、場違い質問かとは思いますが、ご助言いただければ幸いです。 -- pkwk初心者
- 残念ながら私はWindows環境に詳しくありません。しかしsendmailまねーるはSMTPサーバーではないですよね。Windows用のSMTPサーバーをインストールし適切に設定を施す必要があると思います。 -- hirokasa
- Windowsでメール通知機能をしようするには結構改造が必要そう。メッセージ本文の改行コードを\r\nにしないといけなかったり、Subjectにマルチバイトとシングルバイトの混在が困難だったり。自分が調べたなかで一番役にたったサイトはhttp://jp.php.net/manual/ja/function.mb-send-mail.phpです。サーバーのOSによってコードを変えないといけない場合、どうしてるんだろう? -- agena
- file.php::file_write()で作成される更新情報(メール本文)の改行コードが'\n'であったので、pkwk_mail_notify()に渡す前に'\r\n'に変換。
- 同様にmail.php::pkwk_mail_notify()内のheader,footer作成ロジック中の'\n'を'\r\n'に修正。
- mail.php::pkwk_mail_notify()の$subjectにマルチバイト、シングルバイトが混在しているとエラーになるので関数下部を以下のように改造。
ini_set('SMTP', $smtp_server);
$subject = mb_convert_encoding($subject, "ISO-2022-JP","AUTO");
$subject = mb_encode_mimeheader($subject);
mb_language(LANG);
//if ($_headers == '') {
return mail($_to, $subject, $message);
//} else {
// return mb_send_mail($_to, $subject, $message, $_headers);
//}
- PHP初心者なんで間違っていたら指摘願います。 -- agena