我在使用swiftmailer时遇到了麻烦。它一直在崩溃我,但如果我拿出 - > sentTo它没有错误,但我也无法接收电子邮件。
我很困惑我做错了什么。
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
答案 0 :(得分: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.';
}
答案 1 :(得分:0)
此:
无法使用2使用用户名“....”在SMTP服务器上进行身份验证 可能的身份验证员
......正是它所说的。 Gmail不接受您的用户名和密码,因为它们错误或者您未能提供某些必需参数。
根据other questions at Stack Overflow和我自己的测试,主机名,端口和加密是正确的。所以问题可能包括:
解决此问题后,您可能会遇到以下异常:
未捕获的异常'Swift_IoException',消息'无法打开文件进行读取[]'
...由此代码触发:
Swift_Attachment::fromPath($_FILES['userfile']['name'])
如果您正在从$_FILES
array读取错误的项目:fromPath()
,则需要读取文件系统路径,但$_FILES['userfile']['name']
包含客户端计算机上文件的原始名称。