php - SwiftMailer 测试用户名和密码
问题描述
我真的不知道这是否是关于SwiftMailer
或mailtrap.io
但问题是当我尝试建立与所述服务的 SMTP 连接时(mailtrap.io
)我从未收到任何错误,即使我不使用任何用户名或密码。不使用任何用户名或密码时,我不应该出现任何身份验证错误吗?还是我这样做是错误的?
这是我用来测试是否可以在将其存储到.env
文件之前进行动态连接的方法。
/**
* E-mail configuration
*
* @param Request $request
* @return \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse
*/
public function postEmailConfiguration(Request $request)
{
# Try connecting to the SMTP
try {
$encryption = $request->input('encryption');
if ($encryption == 'null') {
$encryption = NULL;
}
$transport = new Swift_SmtpTransport($request->input('host'), $request->input('port'), $encryption);
$transport->setUsername($request->input('username'));
$transport->setPassword($request->input('password'));
$mailer = new Swift_Mailer($transport);
$mailer->getTransport()->start();
# Update .env file
$this->setEnvironmentValues([
'MAIL_HOST' => $request->input('host'),
'MAIL_PORT' => $request->input('port'),
'MAIL_USERNAME' => $request->input('username'),
'MAIL_PASSWORD' => $request->input('password'),
'MAIL_ENCRYPTION' => $request->input('encryption')
]);
return redirect()->back()->with('success', 'Connection to SMTP establised and saved!');
}
# Could not connect to SMTP
catch (Swift_TransportException $e) {
return redirect()->back()->with('error', 'Could not connect to SMTP server.<br>Error: ' . $e->getMessage());
}
# Could not connect to SMTP
catch (Exception $e) {
return redirect()->back()->with('error', 'Could not connect to SMTP server.<br>Error: ' . $e->getMessage());
}
}
解决方案
我在 Symfony 4.4 上使用SwiftMailer 6测试了与 Gmail 的连接,下面的代码(与您的代码相似)按预期工作。
因此,如果您想检查是否在没有发送消息的情况下建立了连接,请使用以下代码:
public function checkConnection()
{
try {
// Create the Transport
$transport = (new \Swift_SmtpTransport(
'smtp.gmail.com',
'587',
'tls'
))
->setUsername('your.username@gmail.com')
->setPassword('yourSuperPassword');
// Create the Mailer using your created Transport
$mailer = new \Swift_Mailer($transport);
$mailer->getTransport()->start();
return true;
} catch (\Swift_TransportException $e) {
return $e->getMessage();
} catch (\Exception $e) {
return $e->getMessage();
}
}
否则,它会引发异常:
Swift_TransportException:
Failed to authenticate on SMTP server with username "your.username@gmail.com" using 3 possible authenticators. Authenticator LOGIN returned Expected response code 235 but got code "535", with message "535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8 https://support.google.com/mail/?p=BadCredentials z7sm3020898ljj.98 - gsmtp".
Authenticator PLAIN returned Expected response code 235 but got code "535", with message "535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8 https://support.google.com/mail/?p=BadCredentials z7sm3020898ljj.98 - gsmtp".
Authenticator XOAUTH2 returned Expected response code 250 but got code "535", with message "535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8 https://support.google.com/mail/?p=BadCredentials z7sm3020898ljj.98 - gsmtp".
推荐阅读
- java - 如何重构在字符串列表中搜索文本的 for 循环
- java - OnClickListener 空对象引用
- html - 仅在必要时扩展高度的 CSS Grid 行?
- html - 删除按钮标签中文本行之间的空格
- python - Imageio 翻转黑白
- botframework - 网络聊天中的语音服务 - 文本到语音 - 如何忽略响应中的某些文本
- r - 编辑完整主题ggplot的元素
- python - Python 可执行文件在 cx_Freeze 之后不会运行
- python - 创建返回 RNN 数据序列的 Pytorch 数据集的正确方法?
- python - Try中Python中的语法错误,除了块