私はGMailアカウントにデータを送信するPHPMailer Contact Formを持っています。これは、サイトがlocalhost上で操作されている場合は正常に実行されますが、Webページをサーバーにアップロードして連絡先フォームを使用しようとしたときに次のエラーが発生します。メッセージは送信できませんでした。メールエラー:SMTP connect() 。PHPMailerお問い合わせフォームはサーバでは動作しませんが、localhostでは動作しますか?
Pleskを介してサーバーにファイルをアップロードしていますが、それは関連性が疑わしいです。ここでは、コードです:
<form action="currentFile.php" method="POST">
Full Name:<input required type="text" name="fullname"/>
<input type="submit"/>
</form>
<?php
require 'phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'pass';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->addAddress('[email protected]');
$mail->Subject = 'Contact Form';
$mail->Body = "Test";
$mail->AltBody = "Test";
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
?>
私は$mail->isMAIL();
に$mail->isSMTP();
を変更しても違いはありません信じています。サイトがオンライン(サーバー上)のときにフォームデータが電子メールに送信されるようにするにはどうすればよいですか?
注:使用されているGmailアカウントとパスワードは、下記のコードでは「偽」となっています。 Gmailアカウントをターゲットにするつもりで、Google Mailのアドレスとパスワードを正常に入力したので、スクリプトはlocalhostで正常に実行されています。
ありがとうございます。
あなたは、ポート587は、サーバー内(発信接続)が開いていることを確認していますか? – Dekel
@Dekel私は会社からサーバーをリースしていますが、これは私が彼らに連絡する必要があるものですか?私はポート25とポート465、GMailの代替オプションを使用してみました、彼らはまた、サーバー上で動作しませんでした。一方、25と587はlocalhost上でうまく動作します。 – H3ll0
ファイアウォール内のポートを開くには、リースされたサーバーにrootアクセス権が必要です。その方法は、インストールされているOS、コントロールパネルなどによって異なります。例えば、ubuntuはufwを使用し、WHM/CpanelをインストールしたOSはWHMパネルからアクセスできるCSF(ConfigServerFirewall)をインストールできるはずです – Chris