検索

ホームページ  >  に質問  >  本文

簡単なガイド: PHPMailer を使用してテストメールを送信する

<p>Debian/Bullseye でローカル Apache2 サーバーを実行しています。 PHPMailer を動作させようとしましたが、失敗しました。 PHPMailer をインストールするには 2 つの異なる方法があるようです。1 つ目は、composer を使用する方法で、これが私が最初に試した方法です。サイトのルートにベンダー フォルダーが作成され、このフォルダーには autoload.php ファイルと他のいくつかのファイルが含まれます。ファイルには次の内容が含まれています: </p> <pre class="brush:php;toolbar:false;"><?php // autoload.php @Composer によって生成 require_once __DIR__ . '/composer/autoload_real.php'; return ComposerAutoloaderInitd359baac21f520c04e608f4eed750560::getLoader();</pre> <p>これは不完全に見えます (終了タグがありません)。とにかく、「test.php」サンプルを動作させることができません。 </p> <p>もう 1 つの方法は、gethub Web サイトから .zip ファイルをダウンロードし、サイトのルート ディレクトリに抽出することです。名前を変更すると、PHPMailer フォルダーができました。 「mailer.php」の例を使用しても効果はありません。 </p> <p>どちらの場合も、ドメインの実際のアカウント情報 (電子メールの送信、ログイン パスワード、SMTP サーバー名、ホストの SMTP セキュリティ、ポート設定) を使用するように SMTP 情報を変更しましたが、拒否に対しても応答しませんでした。メールを受信しました。何も起こらなかった。表示されるのは空白の Web ページだけです。 </p> <p> 以前に使用した php スクリプトがまだ動作するため、php を実行しています (テスト サイトから - 実際のサイトでは smtp の使用を要求しており、PEAR モジュールをインストールできません)。</p> <p>これが私が使用している mailer.php スクリプトです - 一部の詳細は隠されています: </p> <pre class="brush:php;toolbar:false;"><?php //PHPMailer クラスをグローバル名前空間にインポートします //これらは関数内ではなく、スクリプトの先頭にある必要があります PHPMailer\PHPMailer\PHPMailer を使用します。 PHPMailer\PHPMailer\SMTP を使用します。 PHPMailer\PHPMailer\Exception を使用します。 'PHPMailer/src/Exception.php' が必要です。 'PHPMailer/src/PHPMailer.php' が必要です。 'PHPMailer/src/SMTP.php' が必要です。 // インスタンスを作成します。例外を有効にする場合は 'true' を渡します $mail = 新しい PHPMailer(true); 試す { //サーバー設定 $mail->SMTPDebug = SMTP::DEBUG_SERVER; //詳細なデバッグ出力を有効にする $mail->isSMTP(); //SMTPを使用して送信 $mail->Host = 'mail.<domain>.ca'; //通過するSMTPサーバーを設定 $mail->SMTPAuth = true; //SMTP認証を有効にする $mail->Username = 'mail@<domain>.ca'; //SMTP ユーザー名 $mail->Password = ''; //SMTP パスワード $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //暗黙的な TLS 暗号化を有効にする $mail->Port = 465; //接続先の TCP ポート; 'SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS' が設定されている場合は、587 を使用してください //受信者 $mail->setFrom('mail@<ドメイン>.ca', '私から'); $mail->addAddress('gary@<domain>.ca', 'to me'); //受信者を追加 // $mail->addAddress('Recipient@emailaddress.com'); // 名前はオプションです // $mail->addReplyTo('yourname@domain.com', 'Your Name'); // $mail->addCC('cc@example.com'); // $mail->addBCC('bcc@example.com'); //添付ファイル (オプション) // $mail->addAttachment('/var/tmp/file.tar.gz'); // 添付ファイルを追加 // $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // オプションの名前 //コンテンツ $mail->isHTML(true); //メール形式をHTMLに設定します $mail->Subject = 'これが件名です'; $mail->Body = 'これは太字の HTML メッセージ本文です!'; $mail->AltBody = 'これは非 HTML メール クライアントのプレーン テキストの本文です'; $mail->send(); echo 'メッセージが送信されました'; } catch (例外 $e) { echo "メッセージを送信できませんでした。メーラー エラー: {$mail->ErrorInfo}"; } ?></pre> <p>TLS 回線はホスティング会社からのものなので、正しいと思います。 </p> <p>テストで必要のないオプションをコメントアウトしましたが、それでも機能しません。誰か私が間違っていることを理解できますか? </p> <p>ありがとうございます。 </p>
P粉344355715P粉344355715454日前640

全員に返信(1)返信します

  • P粉709644700

    P粉7096447002023-08-27 16:24:52

    ###なるほど、分かりました。ホスティング会社はテスト コードを提供しており、その例では smtp.domain.com が使用されています。実際、彼らの smtp サーバーは smtp ではなくメールです。存在しないサーバーに直面するとコードの実行が停止するだけだと思います...

    返事
    0
  • キャンセル返事