我正在尝试在用户提交表单后使用SwiftMailer(版本= Swift-5.4.8)发送电子邮件。我无法确定为什么未发送电子邮件。我只尝试使用gmail设置,因为听说它最容易使用(Web开发人员的新手)。
我尝试更改config.yml,parameters.yml
parameters:
database_host: 127.0.0.1
database_port: null
database_name: symfony
database_user: root
database_password: null
mailer_transport: gmail
mailer_encryption: ssl
mailer_auth_mode: login
mailer_host: smtp.gmail.com
mailer_user: myemail@gmail.com
mailer_password: mypass
secret: mysecret
swiftmailer:
transport: '%mailer_transport%'
host: '%mailer_host%'
username: '%mailer_user%'
password: '%mailer_password%'
spool: { type: memory }
$form = $this->createFormBuilder()
->add('from', EmailType::class)
->add('message', TextareaType::class)
->add('send',SubmitType::class)
->getForm()
;
if ($form->isSubmitted()){
$data = $form->getData();
$message = \Swift_Message::newInstance()
->setSubject('Join Our Team Request')
->setFrom($data['from'])
->setTo('myemail2@gmail.com')
->setBody(
$data['message'],'text/plain'
)
;
$this->get('mailer')->send($message);
}
return $this->render('xxx.html.twig', array("title" => "...","join_team_form" =>$form->createView()));
视图和表单正确呈现。表单似乎正确提交,但是我从未收到电子邮件。再次成为Web开发人员的新手,任何建议都值得赞赏。
答案 0 :(得分:0)
尝试使用tls加密和smtp传输协议。 您的config.yml将类似于以下内容:
# Swiftmailer Configuration
swiftmailer:
transport: 'smtp'
host: 'smtp.gmail.com'
username: 'myemail@gmail.com'
password: 'mypass'
encryption: tls
auth_mode: login
并且,您必须激活对安全性较低的应用程序的访问,并在您的gmail帐户中禁用两步身份验证。
答案 1 :(得分:0)
但是为此,您需要在应用程序中加载环境变量,我不知道这是您的情况。
下面应该可以工作。将您的config.yml
更新为
swiftmailer:
url: 'gmail://%mailer_user%:%mailer_password%@localhost?encryption=tls&auth_mode=oauth'
spool: { type: 'memory' }
另一建议是在发送邮件之前检查表格是否有效。否则,如果from
是null
或""
if ($form->isSubmitted() && $form->isValid()){ ... }
让我知道它是否不起作用