1

swiftmailerに問題があります。クラッシュし続けますが、-> sendToを削除してもエラーは発生しませんが、メールを受信することもできません。

私は自分が間違っていることについて混乱しています。

require_once 'lib/swift_required.php';

// Using smtp
//$transport = Swift_SmtpTransport::newInstance('my_smtp_host.com', 25)

//Using Gmail
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl") 
  ->setUsername('***') // or your gmail username
  ->setPassword('***'); // or your gmail password

// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

// Create a message
$message = Swift_Message::newInstance($subject)
  ->setFrom(array($email => $name))
  ->setTo(array('John.Doe@gmail.com' => 'John Doe'))
   ->setBody($content, 'text/html');

$message->attach(
Swift_Attachment::fromPath($_FILES['userfile']['name'])->setFilename($pic['tmp_name'])
);

// Send the message
$result = $mailer->send($message);

?>

致命的な誤り:

Uncaught exception 'Swift_TransportException' with message 'Failed to authenticate on SMTP server with username "...." using 2 possible authenticators' in ../lib/classes/Swift/Transport/Esmtp/AuthHandler.php:184 

Stack trace: 

0 ../lib/classes/Swift/Transport/Esmtp/EsmtpTransport.php(312): Swift_Transport_Esmtp_AuthHandler->afterEhlo(Object(Swift_SmtpTransport)) 

1 ../lib/classes/Swift/Transport/AbstractSmtpTransport.php(120): Swift_Transport_EsmtpTransport->_doHeloCommand() 

2 ../lib/classes/Swift/Mailer.php(80): Swift_Transport_AbstractSmtpTransport->start() 

3 upload.php(73): Swift_Mailer->send(Object(Swift_Message)) 

4 {main} thrown in lib/classes/Swift/Transport/Esmtp/AuthHandler.php on line 184
4

2 に答える 2

0

これ:

2つの可能なオーセンティケーターを使用してユーザー名「....」でSMTPサーバーで認証に失敗しました

...それが言うことを正確に意味します。ユーザー名とパスワードが間違っているか、必要なパラメータを指定しなかったため、Gmailはユーザー名とパスワードを受け入れませんでした。

Stack Overflowの他の質問と私自身のテストによると、ホスト名、ポート、暗号化は正しいです。したがって、おそらく問題は次のとおりです。

  1. 間違ったユーザー名を指定しました。
  2. 間違ったパスワードを入力しました。
  3. 双方向認証を有効にしている場合は、アプリケーション固有のパスワードを生成する必要があります。このビデオではその方法を説明しています。

これを修正すると、おそらく次の例外が発生します。

キャッチされなかった例外'Swift_IoException'とメッセージ'読み取り用にファイルを開くことができません[]'

...このコードによってトリガーされます:

Swift_Attachment::fromPath($_FILES['userfile']['name'])

$_FILES配列から間違ったアイテムを読み取っている場合の理由:fromPath()ファイルシステムパスが読み取られることを期待して$_FILES['userfile']['name']いますが、クライアントマシン上のファイルの元の名前が含まれています。

于 2013-02-19T18:01:47.000 に答える
0

メッセージの添付ファイルを次のように変更する必要がありました。

$message->attach(
    Swift_Attachment::fromPath($theDirectory)->setFilename($fileNameForEmail)
    );

    // Send the message
    $result = $mailer->send($message);
}
else{
        echo 'The file you have chosen is invalid. Please go back and try again.';
}
于 2013-02-19T18:00:05.240 に答える