1

私のローカルホスト(Linux Mint OS)では、Swiftmailerは次のコードで正常に動作していますが、サーバーに移動すると、送信機能でハングし、内部サーバーエラーが発生します。

現在、Google Appsを使用してメールを設定しているので、SMTPがこの状況で機能しない可能性がありますか?その場合、SMTPからこれを変更することをどのように提案しますか。

また、このようなメールを送信すると、ユーザー名領域に送信元アドレスが表示されます。「setFrom」関数のfromアドレスとともに表示したい。

//Include the swiftmailer class
require_once 'comm/swiftmailer/swift_required.php';

//Create a message
//Pass it as a parameter when you create the message
$message = Swift_Message::newInstance();
$message->setSubject('My Subject');
$message->setFrom(array('noreply@domain.com' => 'No Reply'));
$message->setTo(array('me@domain.com' => 'Me'));
$message->setBody($emailContent, 'text/html');

//Create transport class and email the message
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')->setUsername('useracctname')->setPassword('password');
$mailer = Swift_Mailer::newInstance($transport);
$result = $mailer->send($message);

助けてくれてありがとう!

4

3 に答える 3

1

これは、サーバーのポートの問題である可能性があります。スパムを防ぐために、ポート465を閉じることができます。サーバーのバージョンのPHPにSSLサポートがない可能性もあります。

私は疑問に思っていますが、ローカルメールサーバーを使用していないため、SMTPが許可されない可能性がありますか?

Gmailを明示的にアドレス指定する場合、別のトランスポートタイプまたは別のサーバーを使用している可能性はほとんどありません。

また、他のトランスポートタイプの1つを使用するのはどうですか?

SMTPをGmailで実行するための唯一のオプションだと思います。ただし、サーバーがmail()ベースのサービスを提供している可能性があります(ただし、明らかにGMailとは異なる送信者アドレスを使用しています)。mailその場合、Swiftmailerのトランスポートを使用できる可能性があります。

于 2011-01-21T15:01:22.123 に答える
1

同じ問題がありました:ローカルでGmailメールを送信できましたが(その構成を更新した後:https ://www.google.com/settings/security/lesssecureapps )、本番環境では送信できませんでした。

問題を解決するために、本番サーバーから本番IP /を使用してGmailアカウントにログインし、Gmailのセキュリティの質問に答えました。

プロダクションIPを使用してGmailアカウントにログインするための解決策の1つは、

  1. sshトンネルを開きます(ssh -2NfCT -D 5000 yoursshuser@yourdomain.org)
  2. そのプロキシを使用するようにブラウザを設定します(例:Firefox:設定>詳細>ネットワーク>設定>手動プロキシ設定> SOCKSホスト:localhost /投稿:5000 / SOCKS v5)
  3. いつものようにあなたにGmailアカウントにログインします

Symfonyによって出力されたエラーは次のとおりです。

app.ERROR: Exception occurred while flushing email queue: Failed to authenticate on SMTP server with username "joe.doe" using 1 possible authenticators [] []
于 2015-12-15T12:44:45.343 に答える
0

さて、ここに解決策があります。

SMTPメールを送信する場合は、サーバーで電子メールアカウントを作成し、コードでこの電子メール情報を使用する必要があります。「from」を使用するときに送信する有効な電子メールアカウントがない場合、サーバーは電子メールを送信しません。これは、偽のアカウントである真の正しいメールアカウントである必要があります。

偽のアカウントを使用して送信する唯一の考えられる理由は、mail()関数を使用することです。

于 2013-11-07T07:45:29.687 に答える