我知道有一些问题但我的问题并没有被我能找到的任何问题解决。
我在LAMP上使用swift邮件程序4.2.1。
我启用了openSSL:
所以我尝试使用以下代码进行SSL连接:
$transporter = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
->setUsername('email@somedomainwithgoogleapps.com')
->setPassword("pwd");
$mailer = Swift_Mailer::newInstance($transporter);
$message = Swift_Message::newInstance($subject)
->setFrom(array($from => 'From name'))
->setTo(array($to=> $name))
->setBody($html_content);
$result = $mailer->send($message);
这会引发以下错误
未捕获的异常'Swift_TransportException',消息'失败 使用用户名在SMTP服务器上进行身份验 使用2可能的“email@somedomainwithgoogleapps.com” 认证人员 /Swift/lib/classes/Swift/Transport/Esmtp/AuthHandler.php:171
如果我更改代码使用tls,如:
$transporter = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587, 'tls')...(rest is the same)
我得到了同样的错误。如果我尝试使用tls端口465,我会得到连接超时。
如果我跑:
$sock = fsockopen('tls://smtp.gmail.com', 465, $errno, $errstr, 10);
echo 'Socket is: ';
var_dump($sock);
echo 'Errors: ' . $errno . ' ' . $errstr;
我得到了
Socket is: resource(2) of type (stream) Errors: 0
其他信息:
var_dump(stream_get_transports());
返回:
array(8){[0] => string(3)“tcp”1 => string(3)“udp”[2] =>串(4) “unix”[3] => string(3)“udg”[4] => string(3)“ssl”[5] =>串(5) “sslv3”[6] => string(5)“sslv2”[7] => string(3)“tls”}
所以我有ssl和tls包装器......
答案 0 :(得分:2)
我认为你可以使用它:
$transport = Swift_SmtpTransport::newInstance('smtp.googlemail.com', 465, "ssl")
->setUsername('test@gmail.com')
->setPassword('test');
- > smtp与googlemail而不是gmail ..
答案 1 :(得分:0)
您使用的密码应该是根据“应用程序专用密码”生成的密码,而不是您的原始密码。