我正在实施SwiftmailerBundle,一切似乎都运行良好,但如果发送邮件则不行。我想问一下Symfony2里面的邮件存储位置。我展示了我的代码:
config.yml
# Swiftmailer Configuration
swiftmailer:
transport: smtp
host: smtp.live.com
username: mymail@hotmail.com #my account
password: ******** #my password
spool: { type: memory }
TablasController.php
public function registroAction()
{
$peticion = $this->getRequest();
$em = $this->getDoctrine()->getManager();
$user = new User(); //creo el usuario
$datos = new Datos();
$user->setDatos($datos);
$crearusuario = true;
$formulario = $this->createForm(new RegistroUsuarioType(), $user);
if ($peticion->getMethod() == 'POST')
{
$formulario->submit($peticion);
$newuser = $this->get('request')->request->get('username'); //recupero el usuario ingresado
$em = $this->getDoctrine()->getManager();
$todos = $em->getRepository('AtajoBundle:User')->findByUsuario();
foreach($todos as $todo)
{
if($todo == $newuser)
{
$crearusuario = false;
}
}
if ($formulario->isValid() and $crearusuario != false) {
$encoder = $this->get('security.encoder_factory')->getEncoder($user);
$user->setSalt(md5(time()));
$passwordCodificado = $encoder->encodePassword($user->getPassword(), $user->getSalt() );
$user->setPassword($passwordCodificado);
$em = $this->getDoctrine()->getManager();
//si todo es correcto, busco el rol 'ROLE_USER' de la tabla ROLE..
//y lo relaciono con el usuario.
$role = $em->getRepository('ProyectoSeguridadBundle:Role')->findByRole('ROLE_USER'); //busco el rol
$user->setRoles($role); //los relaciono
$em->persist($user); //persisto el usuario
$em->flush();
$mail = $this->get('request')->request->get('email');
$empresa = $this->get('request')->request->get('empresa');
$cuit = $this->get('request')->request->get('cuit');
$localidad = $this->get('request')->request->get('localidad');
$calle = $this->get('request')->request->get('calle');
$altura = $this->get('request')->request->get('altura');
$telefono = $this->get('request')->request->get('telefono');
$celular = $this->get('request')->request->get('celular');
$message = \Swift_Message::newInstance()
->setSubject('Bienvenido a LM Lavoc')
->setFrom('mymail@hotmail.com')
->setTo($mail)
->setBody(
$this->renderView(
'AtajoBundle:Mails:bienvenido.html.twig',
array('name' => $newuser, 'mail' => $mail, 'empresa' => $empresa, 'cuit' => $localidad,
'calle' => $calle, 'altura' => $altura, 'telefono' => $telefono, 'celular' => $celular)
));
$this->get('mailer')->send($message);
return $this->redirect($this->generateUrl('home'));
}
}
这是用户被记录的功能,一切正常,而且信息存储在数据库中。问题不在于邮件是否发送,无论如何,正如我所看到的那样。我还想验证config.yml中的设置是否正常,我使用hotmail,而不是主机和传输是否正确。谢谢大家!
答案 0 :(得分:0)
选项1
这是一篇与您的问题相关的优秀食谱文章 http://symfony.com/doc/current/cookbook/email/dev_environment.html
那篇文章有很多方法可以知道你的邮件是否被发送(在本地服务器上调试)
选项2
您可能需要查看http://mailcatcher.me/ 安装完成后,您可以将SMTP配置指向mailcatcher提供的配置,并查看您的应用发送的所有邮件
选项3
如配置中所述,假脱机正在使用内存。
尝试将其更改为基于文件并设置电子邮件在发送之前将存储的路径(您需要运行swiftmailer:spool:send
命令才能真正发送电子邮件)
config.yml
swiftmailer:
default_mailer: default
mailers:
delayed:
transport: %mailer_transport%
host: %mailer_host%
username: %mailer_user%
password: %mailer_password%
port: %mailer_port%
spool:
type: file
path: "%kernel.root_dir%/spool"