mail()
の基本的な例をユーザーIDにわずかに変更して使用していますが、「メーラーエラー:メール機能をインスタンス化できませんでした」というエラーが表示されます。
メール機能を使用する場合-
mail($to, $subject, $message, $headers);
htmlの送信に問題がありますが、PHPMailerを試しているのはうまくいきます。
これはコードです:
<?php
require_once('../class.phpmailer.php');
$mail = new PHPMailer(); // defaults to using php "mail()"
$body = file_get_contents('contents.html');
$body = eregi_replace("[\]",'',$body);
print ($body ); // to verify that I got the html
$mail->AddReplyTo("[email protected]","my name");
$mail->SetFrom('[email protected]', 'my name');
$address = "[email protected]";
$mail->AddAddress($address, "her name");
$mail->Subject = "PHPMailer Test Subject via mail(), basic";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
$mail->MsgHTML($body);
$mail->AddAttachment("images/phpmailer.gif"); // attachment
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
?>
[〜#〜] 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';
$mail->AddAddress($address, "her name");
に変更する必要があります
$mail->AddAddress($address);
これは私の場合はうまくいきました。
これは私のために働いた
$mail->SetFrom("[email protected]","my name", 0); //notice the third parameter
差出人アドレスがそのサーバーで有効なメールアカウント設定であることを確認する必要があります。
添付ファイルを送信していて、コードが小さな添付ファイルでは機能するが、大きな添付ファイルでは失敗する場合:
大きなメールを送信するときに「メール機能をインスタンス化できませんでした」というエラーが表示され、PHPエラーログに「メッセージを送信できません:大きすぎます」というメッセージが含まれている(sendmail、postfix、eximなど)は、これらの電子メールの配信を拒否しています。
解決策は、より大きな添付ファイルを許可するようにMTAを構成することです。しかし、これは常に可能とは限りません。代替ソリューションは SMTPを使用 です。 SMTPサーバーにアクセスする必要があります(SMTPサーバーで認証が必要な場合はログイン資格情報も必要です)。
_$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "mail.yourdomain.com"; // set the SMTP server
$mail->Port = 26; // set the SMTP port
$mail->Username = "yourname@yourdomain"; // SMTP account username
$mail->Password = "yourpassword"; // SMTP account password
_
PHPMailerはデフォルトでPHP mail()
関数を使用し、通常はデフォルトでsendmail(または同様のもの)を使用する_php.ini
_の設定を使用します。上記の例では、デフォルトの動作。
あなたのコードは見栄えがよく、サーバーにPostFixをインストールするのを忘れましたか?
Sudo apt-get install postfix
それは私のために働いた;)
乾杯
この特定のエラー に関するPHPMailerヘルプドキュメントは、正しい道を歩むのに役立ちました。
見つけたのは、php.iniにsendmail_pathが定義されていないため、sendmail_path = /usr/sbin/sendmail -t -i;
私の場合、それは単なるサーバー拒否だったようです。メールサーバーのログ/ SMTP接続のアクセシビリティを確認してください。
この問題が発生し、デバッグと検索を行った後、SERVER(Godaddy)に問題があることに気付きました。
Webホスティングプロバイダーに連絡して、Quota Restrictions
メール機能(これは、スパムボットや大量メール送信(スパム)を行う人々を防ぐために行います)。
彼らは彼らの限界について、そしてあなたがそれらを超えているならあなたに助言することができるかもしれません。また、プライベートサーバーにアクセスして制限をアップグレードすることもできます。
GoDaddyと15分間話をした後、テクニカルサポートはこれを20分以内に解決することができました。
これは私を大いに助けてくれたので、他の誰かがこれに出くわした場合、すべてが失敗するか、他の何かを試す前にこの方法を試すことができるように共有したかったのです。
私の場合、問題の原因は添付ファイルのサイズ制限でした。私のために働いたメールのサイズ制限を確認し、増やしてください。
価値があるのは、この問題があり、エラーメッセージが表示されたcPanelに移動する必要があったためです。
「注意!cpanelプラグインを介して非SMTPメールで使用される電子メールIDを登録してください。スクリプトを介して送信される非SMTPメールでは、未登録の電子メールIDは許可されません。 」
CPanel(メールIDの登録)で電子メールを登録し、10分間待機することで機能するようになりました。
それが誰かを助けることを願っています。
Sendmailが有効になっているかどうかを確認します。ほとんどの場合、サーバーは別の会社から提供されています。
私もこの問題を抱えていました。私の解決策は、selinuxを無効にすることでした。 selinuxで2つの異なるhttp設定(httpd_allow_emailとhttp_can_connectなど)を許可しようとしましたが、機能しなかったため、完全に無効にして動作を開始しました。
古いスレッドですが、私のような人を助けるかもしれません。 PHP.iniでSMTPサーバーの値を正当な値に設定することで問題を解決しました
名前に地域文字が含まれるファイルを送信しているときにこの問題が発生していました:VęryRęgióńął file - name.pdf
。
解決策は、電子メールに添付する前にファイル名をクリアすることでした。