1

ユーザーがアプリに登録したときにウェルカム メールを送信したいと考えています。ユーザーが登録すると、自分のプロフィール ページにリダイレクトされます。ユーザーの作成中にメールを送信しようとしましたが、email() はメールを送信するのに 7 秒かかり、ページはそれまで待機し、7 秒後にユーザーをプロファイルにリダイレクトします。

これは望ましくありません。ユーザーが登録したらすぐにリダイレクトし、その過程でメールを送信したいと考えています。理由がわからない7秒かかります。Godaddy と Hostgator のアカウント、およびローカルホストでオンラインで試しました。

ところで: 私は PHPMailer を使用して電子メールを送信しています。

呼び出し時にメール $_POST[] パラメータ {to, subject, body} を使用して sendMail.php を呼び出すスタンドアロン プロセスを作成するにはどうすればよいですか。

私はajax呼び出しでうまくいきますが、ページが登録からプロファイルにリダイレクトされるとすぐに、電子メールスクリプトが停止します. 私はこのコードを試しました:

<script language="JavaScript">
    $.post( "sendMail.php", { to: "$to", subject: "$subject", htmlBody: "$htmlBody", altBody: "$altBody" } );
location.href=profile.html
</script>

助けてください、私はたくさん検索しましたが、それらは私がそうではないシェルで動作し、他のソリューションはunix/linuxベースでした。xamppとgodaddy Linux共有ホスティングで、sshアクセスなしで動作させたいです。

4

3 に答える 3

0

フォーム送信時ではなく、プロファイル ページに到達すると実行されるように、プロファイル ページに JavaScript を配置してみてください。sendMail.php スクリプトでウェルカム メールが既に送信されているかどうかを確認する必要があります。

しかし、このスクリプトを使用して電子メールを送信することは、悪意のあるユーザーが必要なコンテンツを含む電子メールを誰にでも送信できるようにする可能性があるため、あまり良い考えではありません。ブロックされました。これは、「スパマー」が使用する非常に一般的な手法です。

ホスティング会社との契約に違反しないように、送信前に電子メールをどのように処理するかに非常に注意する必要があります.

于 2013-12-13T15:47:35.547 に答える
0

PHPはシングルスレッド言語です。これは、前のジョブが実行される (そして終了する) 前にジョブを開始できないことを意味します...

タスクの順序を変更できます。ウェルカム ページが完全にレンダリングされた後、メールを送信することができます。

この順序で試してください。

1) ユーザー登録

2) ようこそページを表示し、

3) ウェルカム メールを送信する....

この順序で、新しいユーザーはウェルカム ページを表示する前に 7 秒待たずに済みます。

于 2013-12-13T16:03:07.613 に答える
0

メール送信専用のジョブ キューであるMail_Queueを使用するか、Zend_Queue [ZF1ZF2]を使用して、PHPMailer で動作するようにカスタマイズされたものを作成します。Gearmanの使用を検討することもできます。

于 2013-12-13T16:03:17.037 に答える