私はphpmailer()コンセプトを使用して、phpスクリプトを使用して共有サーバーからユーザーにメールを送信しましたが、phpmailerコードに従ってスクリプト内のすべてが正しくても送信できません。
このような私のコード:
$message = " This is testing message from my server";
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->Host = "smtp.gmail.com";
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "[email protected]"; // My gmail username
$mail->Password = "************"; // My Gmail Password
$mail->SetFrom("[email protected]");
$mail->Subject = "Test Mail from my Server";
$mail->Body = $message;
$mail->AddAddress($email);
if($mail->Send())
{
print json_encode("SUCCESS");
}
else
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
注: SMTPサーバーとして「GMail」を使用し、SMTPSecureは「ssl」、ポートは「465」、ユーザー名とパスワードはGMailのユーザー名とパスワードです
VPS共有サーバーを使用し、そのサーバーにphpスクリプトを保持しました。
私は私のPHPスクリプトに問題はないと思うし、なぜそれが機能しないのか分かりません。
このようなエラーが発生しました。
2014-02-21 12:30:11 CLIENT -> SERVER: EHLO jkcorporates.com
2014-02-21 12:30:11 CLIENT -> SERVER: AUTH LOGIN
2014-02-21 12:30:11 CLIENT -> SERVER: bW9vcnRoaS5tcmsxMEBnbWFpbC5jb20=
2014-02-21 12:30:11 CLIENT -> SERVER: OTk0MTI0MTE0MA==
2014-02-21 12:30:11 SMTP ERROR: Password command failed: 534-5.7.14
534-5.7.14 i-_eumA> Please log in via your web browser and then try again.
534 5.7.14 54 k76sm17979938yho.18 - gsmtp
2014-02-21 12:30:11 CLIENT -> SERVER: QUIT
" The ERROR is " SMTP connect() failed.
そのための解決策をいくつか教えてください。
前もって感謝します。
覚えておいてください共有サーバー名 'VPS.mydomain.com'を使用し、ユーザーにメールを送信するためにSMTPサーバーとしてGMailを使用したいです。
少し遅れますが、おそらく誰かがそれを役に立つと思うでしょう。
問題を解決するリンク(Googleアカウントにログインする必要があります):
https://security.google.com/settings/security/activity?hl=en&pli=1
https://www.google.com/settings/u/1/security/lesssecureapps
https://accounts.google.com/b/0/DisplayUnlockCaptcha
何が起こるかの説明:
この問題は、「安全性の低い」アプリケーションがメールアカウントを使用しようとしていることが原因である可能性があります(これは、Googleヘルプによると、安全なものとそうでないものの判断方法が不明です)OR国を変更する場合(たとえば、VPNを使用する、コードを別のサーバーに移動する、または実際に世界のさまざまな部分からログインしようとする場合)に連続して数回ログインするOR。
解決するために:(初めて)
これは最初に機能しましたが、数時間後、おそらく問題を再現するために多くのテストを行っていたため、上記の方法では修正できませんでした。さらに、私はキャプチャをクリアしなければなりませんでした(最近、アカウントにログインするときにWordまたは文を書き直すように要求する面白い画像):
お役に立てれば。
これを使って:
https://www.google.com/settings/u/1/security/lesssecureapps
https://accounts.google.com/b/0/DisplayUnlockCaptcha
https://security.google.com/settings/security/activity?hl=en&pli=1
このリンクは、Googleアカウントへのアクセスを許可します
更新日19-05-2017:
メールを送信するIPアドレスからアクセスする必要があるこれらのURL
他の人がすでに提案したように、「安全性の低い」アプリケーションを有効にするか、単にssl
からtls
に切り替えることができます。
$mailer->Host = 'tls://smtp.gmail.com';
$mailer->SMTPAuth = true;
$mailer->Username = "[email protected]";
$mailer->Password = "***";
$mailer->SMTPSecure = 'tls';
$mailer->Port = 587;
tls
を使用する場合、安全性の低いアプリケーションにアクセスを許可する必要はありません。IMAPが有効になっていることを確認してください。
問題を解決しました-PHPMailer-SMTPエラー:サーバーからメールを送信するときにパスワードコマンドが失敗しました
require_once('class.phpmailer.php');
include("class.smtp.php");
$nameField = $_POST['name'];
$emailField = $_POST['email'];
$messageField = $_POST['message'];
$phoneField = $_POST['contactno'];
$cityField = $_POST['city'];
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
$mail->IsSMTP(); // telling the class to use SMTP
$body .= $nameField;
try {
//$mail->Host = "mail.gmail.com"; // SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = 465; // set the SMTP port for the GMAIL server
$mail->SMTPKeepAlive = true;
$mail->Mailer = "smtp";
$mail->Username = "[email protected]"; // GMAIL username
$mail->Password = "********"; // GMAIL password
$mail->AddAddress('[email protected]', 'abc');
$mail->SetFrom('[email protected]', 'def');
$mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
$mail->MsgHTML($body);
$mail->Send();
echo "Message Sent OK</p>\n";
header("location: ../test.html");
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
重要:
Google設定にアクセスして、「安全性の低い」アプリケーションを有効にします。それが動作します。それは私のために働いた。
私は同じ問題に直面しており、なぜこれが起こるのか知っていると思います。
私が使用するgmailアカウントは通常インドから使用され、使用するWebサーバーはオランダにあります。
Googleは、異常な場所からログインが試行されたことを通知し、Webブラウザーを介してその場所からログインする必要があります。
さらに、 https://security.google.com/settings/security/activity を介してGmailアカウントへの疑わしいアクセスを受け入れなければなりませんでした
しかし、オランダの場所からgmailにログインする必要があるため、最終的に私の問題はまだ解決されていません。
これが少しでもお役に立てば幸いです! (申し訳ありませんが、このメールアドレスでの返信メールは読みません)
G Suitユーザーの場合、管理者が解決できます
ラジオボタンのいずれかを選択しますa)すべてのユーザーに対して安全性の低いアプリへのアクセスを無効にする(推奨)b)ユーザーが安全性の低いアプリへのアクセスを管理できるようにするc)すべてのユーザーに安全性の低いアプリへのアクセスを強制する(推奨されません)
通常、a)のために機能しません!そして、c)オプションですぐに動作を開始します。 b)– GSuitのユーザーごとにオプションをさらに構成する必要があります
それが役に立てば幸い
それでも機能しない場合は、@ CallMeBobが提供するメソッドに加えて、以下を試してください。
この行のセミコロンを削除します。sendmail_path = "\" C:\ xampp\sendmail\sendmail.exe\"-t"
この行にセミコロンを追加します。sendmail_path = "C:\ xampp\mailtodisk\mailtodisk.exe"
注:
**smtp_portは、PHPコードで記述されたものと集計する必要があります。
**your-gmail-usernameおよびyour-gmail-password使用しているアカウントに。
**
お役に立てれば! :)
このエラーは、Gmailのより多くのセキュリティ機能が原因です。
このエラーが生成されたら... Gmailアカウントにログインしてください。GOOGLEからセキュリティアラートを見つけることができます。メールをフォローしてください。
Gメールアカウントの2段階認証を完了し、そのパスワードを使用しない限り、メールはオンラインで送信されません。