20

PHPMailer を介してメールを送信しようとすると、このエラー メッセージが表示されます。私のコードは以下の通りです:

<?
require("phpmailer/class.phpmailer.php"); // First we require the PHPMailer libary in our script
$mail = new PHPMailer(); // Next we create a new object of the PHPMailer called $mail
$mail->From = "rajasekar.kcet@gmail.com";
$mail->FromName = "Rajasekar";
$mail->AddAddress("rajasekar.kcet@gmail.com"); // This is the adress to witch the email has to be send.
$mail->Subject = "First PHP Email message"; // This is the subject  of the email message.
$mail->Body = "Hi! \n\n This is my first e-mail sent through PHP."; // This is the actual email message
if(!$mail->Send()) // Now we send the email and check if it was send or not.
{
   echo 'Message was not sent.';
   echo 'Mailer error: ' . $mail->ErrorInfo;
}
else
{
   echo 'Message has been sent.';
}
?>
4

17 に答える 17

42

Ubuntu (少なくとも 12.04) では、デフォルトで sendmail がインストールされていないようです。コマンドを使用してインストールする必要があります sudo apt-get install sendmail-bin

上記のように、適切なアクセス許可を構成する必要がある場合もあります。

于 2012-06-09T18:55:32.423 に答える
13

このコード行を使用しました

if($phpMailer->Send()){

    echo 'Sent.<br/>';

}else{

    echo 'Not sent: <pre>'.print_r(error_get_last(), true).'</pre>';

}

問題が何であったかを調べるために。結局、私はセーフモードで実行していて、770 行目か何かで、5 番目の引数$paramsが に与えられましたがmail()、これはセーフモードでの実行時にはサポートされていません。私はそれをコメントアウトしただけで、ほら、うまくいきました:

$rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header/*, $params*/);

MailSendPHPMailerの関数内にあります。

于 2012-01-22T21:59:34.987 に答える
7

この問題が発生したばかりで、Apache エラー ログで sendmail がインストールされていないことがわかりました。インストール後、すべて正常に動作していました。

root@web1:~$ tail /var/log/apache2/error.log
sh: 1: /usr/sbin/sendmail: not found
于 2013-08-15T08:46:28.893 に答える
3

同じ問題がありました。apache2error.logファイルを簡単に調べただけで、何が問題であるかが正確にわかりました:

> sh: /usr/sbin/sendmail: Permission denied

そのため、解決策はファイルに適切な権限を与える/usr/sbin/sendmailことでした (php からはアクセスできませんでした)。

これを行うコマンドは次のようになります。

> chmod 777 /usr/sbin/sendmail

それが存在することを確認してください!

于 2011-11-19T13:08:02.030 に答える
2

SMTPを使用して電子メールを送信してみてください:-

$mail->IsSMTP();
$mail->Host = "smtp.example.com";

// optional
// used only when SMTP requires authentication  
$mail->SMTPAuth = true;
$mail->Username = 'smtp_username';
$mail->Password = 'smtp_password';
于 2011-08-22T08:54:02.307 に答える
2

古いスレッドに戻ると、「AddressTo」メール アドレスの 1 つが無効であるという問題がありました。そのメールアドレスを削除すると、エラーが解消されました。

于 2014-09-19T18:56:43.083 に答える
2

phpmailer に付属の smtp クラスも必ず含めてください。

// for mailing
require("phpmailer/class.phpmailer.php");
require("phpmailer/class.smtp.php");
于 2009-12-22T07:33:06.843 に答える
1

これはシステムエラーです。

システムのエラーを次のように確認します。

tail /var/log/httpd/error_log

それはどんな理由でもありえます。

于 2010-10-27T21:17:01.090 に答える
1

Gmail 以外のアドレスで試してください。彼らは(私が知る限り)メールを送信するためのsmptアクセスを許可していません。私は先週、単純なメール プログラムを実行していましたが、送信元にデフォルトのポートを使用せず、https 経由で転送する必要があります。

于 2010-01-06T23:12:24.960 に答える
1

hereに記載されているように、「これは、PHP インストールが mail() 関数を正しく呼び出すように構成されていない (たとえば、sendmail_path が php.ini で正しく設定されていない) か、ローカル メール サーバーがインストールおよび構成されていないことを意味します。」

私の場合、ウェブホストの設定で mail() 関数 (「mail() キューを有効にする」) を許可する必要がありました。

于 2016-07-07T10:24:09.887 に答える
1

ホストに確認して、送信されるメールに 1 時間あたりの制限があるかどうかを確認してください。

于 2011-07-30T05:39:10.617 に答える
0

古いスレッドですが、私のような人の助けになるかもしれません。PHP.iniでSMTPサーバーの値を正当な値に設定することで問題を解決しました

于 2013-06-05T08:40:33.913 に答える
0

同じエラーが発生しました。返信先が問題の原因でした。私はそれを削除しました。

$email->AddReplyTo( $admin_email, $admin_name ); 
于 2016-06-30T17:32:41.327 に答える
0

「メール関数をインスタンス化できませんでした」は、PHPMailer が (Mail 拡張機能の) mail() への呼び出しが失敗したことを報告する方法です。(つまり、'mail' メーラーを使用しています。)

PHPMailer::MailSend で mail() を呼び出す前に @s を削除してみて、エラーがあれば、黙って破棄されているかどうかを確認してください。

于 2010-02-20T19:31:23.373 に答える