1

私の現在のプロジェクトは、ユーザーからの入力を受け取るフォームです。そのデータを受け取ったら、データを挿入したユーザーを含むいくつかの電子メールアドレスに警告/レポートを送信する必要があります。Apache、MySQL、PHPなど、ほとんどすべてが稼働しています。

今では、PHPを使用するためにメールサーバーをインストールしたことがないので、ちょっと迷っています。

私の雇用主は、サーバーにMSExchange2007をインストールしています。それを使用する必要がありますか?それを使用するようにphpを構成するにはどうすればよいですか?Exchange 2007から何が必要ですか(パラメーター)?

そうでない場合は、Apache + MySQL + PHPを備えた同じマシンに、この目的のためだけに新しいメールサーバーをインストールすることをお勧めしますか?

私はすでに存在するExchangeサーバーを使用する傾向がありますが、いくつかのオンライン記事で、構成するのが最も簡単ではないことを読みました。

アップデート:

<?php
include("Mail/Mail.php");
/* mail setup recipients, subject etc */
$recipients = "mail@mail.com";
$headers["From"] = "mail@mail.com";
$headers["To"] = "someone@mail.com";
$headers["Subject"] = "User feedback";
$mailmsg = "Hello, This is a test.";
/* SMTP server name, port, user/passwd */
$smtpinfo["host"] = "mail.name.com";
$smtpinfo["port"] = "25";
$smtpinfo["auth"] = true;
$smtpinfo["username"] = "username";
$smtpinfo["password"] = "pass";
/* Create the mail object using the Mail::factory method */
$mail_object =& Mail::factory("smtp", $smtpinfo);
/* Ok send mail */
$mail_object->send($recipients, $headers, $mailmsg);
?>

上記の例を使用すると、Exchange2007を介してメールを送信できません。

ページにエラーが出力されないので、ちょっと迷っています。何が悪いのかわからない。

更新:誰かが良いメールサーバーを推薦できますか?

4

3 に答える 3

0

Exchange は通常の SMTP メール配信をサポートしています (そうしなければなりません。そうしないと、メールの世界の残りの部分と通信できません)、通常のメール サーバーであるかのように、PHP の構成を Exchange サーバーに向けるだけです。

ここに文書化されたメール用の .ini 設定がいくつかあります: http://php.net/manual/en/mail.configuration.php#ini.smtp

交換サーバーが認証を必要とせず、サーバーからのメールを受け入れると仮定すると、必要なのはそれだけです。

ファローアップ:

Mail パッケージのドキュメントを読みましたか? このsend()メソッドは、成功すると TRUE を返し、PEAR_Error失敗するとオブジェクトを返します。送信試行の失敗に関する詳細が含まれます。おそらく必要です$PEAR_Error:message。詳細はこちら: http://pear.php.net/package/PEAR/docs/1.9.1/PEAR/PEAR_Error.html。コードを次から変更します

$mail_object->send($recipients, $headers, $mailmsg);

$status = $mail_object->send($recipients, $headers, $mailmsg);
if ($status !== TRUE) {
    die("Error sending mail: " . $status::message);
}
于 2010-09-07T17:15:50.907 に答える
0

認証が必要な可能性が非常に高いです。これは、送信元のメール アカウントにユーザー名とパスワードを提供するのと同じくらい簡単です。

その場合は、PEAR Mail 拡張機能を使用することをお勧めします。smtp サーバーで認証を行うための factory という関数があります。(サーバーが必要とする場合は、SSL 暗号化を含みます)

http://pear.php.net/manual/en/package.mail.mail.factory.php

コードは次のようになります。

$smtp = Mail::factory('smtp',
  array ('host' => $host,
   'port' => $port,
   'auth' => true,
   'username' => $username,
   'password' => $password));

$mail = $smtp->send($to, $headers, $body);

サーバーに PEAR 拡張機能をインストールすることは、思っているほど難しくありません。

于 2010-09-08T16:02:38.093 に答える
0

Ok。動作するようになりました。ふぅ。

いろいろ読んで、その理由がわかりました。smtp exchange サーバーのリレーの問題に関するものでした。

でも、あなたたちがいなかったら、私はそこにたどり着くことはできなかったでしょう。xD

皆さん、ありがとうございました。=)

于 2010-09-09T21:09:04.737 に答える