1

Hostgator サーバーで Pear メールを使用しようとしています。最初に cpanel を使用してメール パッケージをインストールしましたが、net_smpt は既にインストールされていましたが、Mail.php クラスを要求すると、Net フォルダーが Mail フォルダー内にあることが要求されました。以前は両方とも同じレベルでした。そこで、Net を Mail 内に移動したところ、不平を言うのをやめました。

これは私のテスト スクリプトで、ほとんどがチュートリアルからコピーされています。

<?php
echo 'Test Pear<br>';

require_once("/home3/myaccountname/php/Mail.php");

$from = "info@mydomain.com";
$to = "myrealemail@gmail.com";
$subject = "Test pear";
$body = "Lorem ipsum dolor sit amet, consectetur adipiscing elit...";

$params['host'] = 'gator3015.hostgator.com';
$params['port'] = '465';
$params['username'] = 'info@mydomain.com';
$params['password'] = 'mypassword';
$params['debug'] = 'true';

$headers = array('From' => $from, 'To' => $to, 'Subject' => $subject);

$smtp = Mail::factory('smtp', $params);

echo 'good so far';

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

echo 'Still there';

if ( PEAR::isError($mail) ) {
    echo("<p>Error sending mail:<br/>" . $mail->getMessage() . "</p>");
} else {
    echo("<p>Message sent.</p>");
}
?>

SMTP パラメーターは、codeigniter メール クラスを使用してテストされており、メールの送信に成功しています (ただし、cronjobs と codeigniter が機能しないため、代わりに Pear Mail を使用しようとしています)。SSL が必要ですが、Pear Mail ではデフォルトで有効になっているようです。

テストで PHP エラー メッセージが表示されることを確認しました。何が起こるかというと、「Still there」以外のすべてのエコーが表示されるため、 を呼び出すと何か問題が発生します$smtp->send()。ただし、debug を true に設定しても、エラー メッセージは表示されません。こちらif(PEAR::isError($mail))も効果はないようです。そして、メールは送信されません。

だから私は何がうまくいかないのかを知るのに少し途方に暮れています。何か案が?

更新: ホストは何らかの理由で SMTP をサポートしていないため、奇妙な問題が発生した理由が説明されています。Mandrill を使用すると問題なく動作します。

4

1 に答える 1

0

この例を試してみてください。

<?php
 require_once "Mail.php";

 $from = "Sandra Sender <sender@example.com>";
 $to = "Ramona Recipient <recipient@example.com>";
 $subject = "Hi!";
 $body = "Hi,\n\nHow are you?";

 $host = "mail.example.com";
 $username = "smtp_username";
 $password = "smtp_password";

 $headers = array ('From' => $from,
   'To' => $to,
   'Subject' => $subject);
 $smtp = Mail::factory('smtp',
   array ('host' => $host,
     'auth' => true,
     'username' => $username,
     'password' => $password));

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

 if (PEAR::isError($mail)) {
   echo("<p>" . $mail->getMessage() . "</p>");
  } else {
   echo("<p>Message successfully sent!</p>");
  }
 ?>

こちらも、

<?php
 require_once "Mail.php";

 $from = "Sandra Sender <sender@example.com>";
 $to = "Ramona Recipient <recipient@example.com>";
 $subject = "Hi!";
 $body = "Hi,\n\nHow are you?";

 $host = "ssl://mail.example.com";
 $port = "465";
 $username = "smtp_username";
 $password = "smtp_password";

 $headers = array ('From' => $from,
   'To' => $to,
   'Subject' => $subject);
 $smtp = Mail::factory('smtp',
   array ('host' => $host,
     'port' => $port,
     'auth' => true,
     'username' => $username,
     'password' => $password));

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

 if (PEAR::isError($mail)) {
   echo("<p>" . $mail->getMessage() . "</p>");
  } else {
   echo("<p>Message successfully sent!</p>");
  }
 ?>
于 2013-07-22T05:07:47.317 に答える