8

SwiftMail がメールを送信しませんが、mail()動作します。ここと同じ。

EchoLogger を追加しましたが、何も出力されません。

$message = Swift_Message::newInstance();
$message->setSubject('Test');
$message->setTo( $email );
$message->setFrom(ABSENDER);
$message->setBody($nl_text);

$transport = Swift_MailTransport::newInstance();
$mailer = Swift_Mailer::newInstance($transport);

$logger = new Swift_Plugins_Loggers_EchoLogger();
$mailer->registerPlugin(new Swift_Plugins_LoggerPlugin($logger));

$result = $mailer->send($message, $failures);
var_dump($failures);

メールが返ってきたの$failuresですが、なぜですか?

アップデート

Swift_Transport_SimpleMailInvoker::mailパラメータをダンプして、これを得ました:

  $headers =>
  string(208) "Message-ID: <1337173064.4fb3a4480b8dd@domain.de>
Date: Wed, 16 May 2012 14:57:44 +0200
From: news@domain.de
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
"
  $extraParams =>
  string(15) "-fnews@domain.de"

$to, $subject, $bodyで使用したものと同じmail()です。何が問題なのかまだわかりません。

アップデート #2

これは私にとってはうまくいきました:

mail($email, 'Test', $nl_text, "From: " . ABSENDER);

免責事項: これは解決策ではありませんが、フレームワークをデバッグして実際の解決策を見つける時間がなかったため、私が使用した回避策です。上記の情報を自由に使用して自分自身をデバッグし、ソリューションをここに投稿してください。私は喜んでそれを受け入れ、賛成します。

4

7 に答える 7

8

デバッガーを使用して、send() の背後にあるコードをステップ実行することをお勧めします。

デバッガを使用できない場合は、 の関数mailを参照してくださいlib/classes/Swift/Transport/SimpleMailInvoker.php。シャットダウン演算子 ('@') を使用した内部メール機能への呼び出しがあります。この演算子を削除すると、エラー メッセージが表示される場合があります。またvar_dump()、そこに渡されたパラメーターをダンプするために使用することもできます。

于 2012-05-16T12:10:56.487 に答える
7

私も同じ問題を抱えていました。

ドキュメンテーションswiftmailer.orgによると、デフォルトで Swift_MailTransport::newInstance() はパラメータ-f%sを使用するため、 を取得"-fnews@domain.de"して、 間の空白スペースを解決し-f %sます。

コードは次のようになります $message = Swift_Message::newInstance('-f %s')

null__construct() に渡すだけでその問題を解決しました。したがって、私の作業コードは次のようになります。

$message = Swift_Message::newInstance(null);

それが誰かを助けることを願っています。

PS メールの送信には Postfix を使用しています。

于 2014-06-26T09:51:51.947 に答える
6

私はそれを修正することができました。from ヘッダーで noReply@mydomain.com を使用していましたが、このメール アカウントは作成されませんでした。noReply@mydomain.com を作成したところ、メールが機能し始めました。これが誰かに役立つことを願っています。

于 2013-03-31T14:50:56.517 に答える
2

ドキュメントによるとデフォルトで使用するデフォルトのトランスポートメカニズムを使用しているようmail()です。

このトランスポートを使用する場合の重大な欠点は次のとおりです。

  • 予測できないメッセージ ヘッダー
  • 配達の失敗に関するフィードバックの欠如
  • リアルタイムの配信フィードバックを必要とするいくつかのプラグインのサポートの欠如

ソース

これをデバッグしている場合は、SwiftMailer のmail()関数の実装を見つけて、渡された引数をダンプし、それらを自分の作業バージョンの と比較しますmail()。SwiftMailer の経験はありませんが、これは速い選択肢のようです。

于 2012-05-16T12:45:52.710 に答える
1

問題は にありSwift_Transport_MailTransport, private $_extraParams = '-f%s'ます。

フラグ'-f'(コードを参照してください: string(15) "-fnews@domain.de") は、状況によっては失敗します。Code Igniter にも同じ「バグ」があります。

于 2014-02-18T15:06:31.540 に答える
-2

これは本当に古いかもしれません。同じ問題があれば、短い メールを使用して解決しました。@記号の後の最大長は10のようです.これは私がこれまでにテストしたものです.

例:

$sname = 'noreply@system.com';
->setFrom(array($sname => 'Some Header Title here'));
于 2014-05-14T11:09:00.253 に答える