我正在使用Yii2高级模板,在注册发送电子邮件时遇到问题。我使用mailtrap发送电子邮件,并在common/config/mainlocal-php中包含所有详细信息。使用 Xampp 作为主机。
Maillocal.php看起来像:
<?php
return [
'components' => [
'db' => [
'class' => 'yiidbConnection',
'dsn' => 'mysql:host=localhost;dbname=advanced_yii2',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
],
'mail' => [
'class' => 'yiiswiftmailerMailer',
'viewPath' => '@common/mail',
'useFileTransport' => false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.mailtrap.io',
'username' => '9**************e',
'password' => '7***************5',
'port' => '2525',
'encryption' => 'tls',
],
],
],
];
This is the error i am getting.
Swift_TransportException
Process could not be started [The system cannot find the path specified.
]
1. in C:xampphtdocsyii-applicationvendorswiftmailerswiftmailerlibclassesSwiftTransportStreamBuffer.php at line 299
2. in C:xampphtdocsyii-applicationvendorswiftmailerswiftmailerlibclassesSwiftTransportStreamBuffer.php at line 54 – Swift_Transport_StreamBuffer::establishProcessConnection()
3. in C:xampphtdocsyii-applicationvendorswiftmailerswiftmailerlibclassesSwiftTransportAbstractSmtpTransport.php at line 143 – Swift_Transport_StreamBuffer::initialize(['timeout' => 30, 'blocking' => 1, 'command' => '/usr/sbin/sendmail -bs', 'type' => 16])
4. in C:xampphtdocsyii-applicationvendorswiftmailerswiftmailerlibclassesSwiftTransportSendmailTransport.php at line 50 – Swift_Transport_AbstractSmtpTransport::start()
5. in C:xampphtdocsyii-applicationvendoryiisoftyii2-swiftmailersrcMailer.php at line 113 – Swift_Transport_SendmailTransport::start()
6. in C:xampphtdocsyii-applicationvendoryiisoftyii2-swiftmailersrcMailer.php at line 156 – yiiswiftmailerMailer::getSwiftMailer()
7. in C:xampphtdocsyii-applicationvendoryiisoftyii2mailBaseMailer.php at line 263 – yiiswiftmailerMailer::sendMessage(yiiswiftmailerMessage)
8. in C:xampphtdocsyii-applicationvendoryiisoftyii2mailBaseMessage.php at line 49 – yiimailBaseMailer::send(yiiswiftmailerMessage)
9. in C:xampphtdocsyii-applicationfrontendmodelsSignupForm.php at line 77 – yiimailBaseMessage::send()
10. in C:xampphtdocsyii-applicationfrontendmodelsSignupForm.php at line 57 – frontendmodelsSignupForm::sendEmail(commonmodelsUser)
11. in C:xampphtdocsyii-applicationfrontendcontrollersSiteController.php at line 156 – frontendmodelsSignupForm::signup()
12. frontendcontrollersSiteController::actionSignup()
13. in C:xampphtdocsyii-applicationvendoryiisoftyii2baseInlineAction.php at line 57 – call_user_func_array([frontendcontrollersSiteController, 'actionSignup'], [])
14. in C:xampphtdocsyii-applicationvendoryiisoftyii2baseController.php at line 157 – yiibaseInlineAction::runWithParams(['r' => 'site/signup'])
15. in C:xampphtdocsyii-applicationvendoryiisoftyii2baseModule.php at line 528 – yiibaseController::runAction('signup', ['r' => 'site/signup'])
16. in C:xampphtdocsyii-applicationvendoryiisoftyii2webApplication.php at line 103 – yiibaseModule::runAction('site/signup', ['r' => 'site/signup'])
17. in C:xampphtdocsyii-applicationvendoryiisoftyii2baseApplication.php at line 386 – yiiwebApplication::handleRequest(yiiwebRequest)
18. in C:xampphtdocsyii-applicationfrontendwebindex.php at line 17 – yiibaseApplication::run()
我认为mail
的问题,你应该使用mailer
嵌套的mail
例如:
'mailer' => [
'class' => 'yiiswiftmailerMailer',
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'localhost',
'username' => 'username',
'password' => 'password',
'port' => '587',
'encryption' => 'tls',
],
],
这是文档
我已经通过我的swiftmailer帐户测试了此设置,并且可以确认通过注册提交的注册电子邮件是否到达了在注册下输入的电子邮件帐户。因此,通过我设置的下面的邮件陷阱帐户并成功。我通常使用我在宽带提供商下设置的虚拟帐户,以便我可以绕过我在设置时遇到困难的hmailserver。我通常使用端口 25 通过我的宽带提供商进行连接,所以我决定也使用 25 进行邮件陷阱。
<?php
'mailer' => [
'class' => 'yiiswiftmailerMailer',
'enableSwiftMailerLogging' =>false,
//set useFileTransport to true to send to log file
'useFileTransport' => false,
'transport' => ['class' => 'Swift_SmtpTransport',
'host' => 'smtp.mailtrap.io',
'username' => 'f8b66f8dc0eac1',
'password' => 'd5da52313fcdd9',
'port' => '25',
//'encryption' => 'tls',
]
],
?>
偶然地,我正在使用 sjaak/pluto 进行注册,并且对这个新模块非常满意。