Мне нужна помощь по отправке электронных писем в Symfony 4.
Я создал контактную форму в Symfony 4., где я использую formbuilder и swiftmailer.Форма обратной связи работает, она проверяется и я могу отправить.но письма не приходят плюс я не получаю подтверждающее сообщение на самой странице контакта после отправки.я использую почтовик с хостом самого сайта.Сайт находится в производственном режиме.
См. Ниже код, который я использовал.Может быть, я пропустил некоторые настройки?спасибо заранее!
ContactType.php
<?php
// your-path-to-types/ContactType.php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
class ContactType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name',TextType::class);
$builder->add('email',EmailType::class);
$builder->add('subject',TextType::class);
$builder->add('body',TextareaType::class);
}
public function getBlockPrefix()
{
return 'contact';
}
}
Contact.php моя сущность
<?php
// src/Entity/Contact.php
namespace App\Entity;
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\Length;
use Doctrine\Common\Collections\ArrayCollection;
class Contact
{
protected $name;
protected $email;
protected $subject;
protected $body;
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
public function getEmail()
{
return $this->email;
}
public function setEmail($email)
{
$this->email = $email;
}
public function getSubject()
{
return $this->subject;
}
public function setSubject($subject)
{
$this->subject = $subject;
}
public function getBody()
{
return $this->body;
}
public function setBody($body)
{
$this->body = $body;
}
public static function loadValidatorMetadata(ClassMetadata $metadata)
{
$metadata->addPropertyConstraint('name', new NotBlank());
$metadata->addPropertyConstraint('email', new Email());
$metadata->addPropertyConstraint('subject', new NotBlank());
$metadata->addPropertyConstraint('subject', new Length(array('max'=> 50)));
$metadata->addPropertyConstraint('body', new Length(array('min'=> 5)));
}
}
и мой контроллер
<?php
namespace App\Controller;
use App\Entity\Contact;
use App\Form\ContactType;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
final class PagesController extends DefaultController
{
/**
* @Route("/contact", name="contact")
* @Method("GET|POST")
*/
public function contact(Request $request, \Swift_Mailer $mailer)
{
$enquiry = new Contact();
$form = $this->createForm(ContactType::class, $enquiry);
$this->request = $request;
if ($request->getMethod() == 'POST') {
$form->handleRequest($request);
if ($form->isValid()) {
$message = (new \Swift_Message('Hello Email'))
->setFrom('contact@example.com')
->setTo('xxxxxxx@gmail.com')
->setBody($this->renderView('contact/contactEmail.txt.twig', array('enquiry' => $enquiry)));
$mailer->send($message);
$this->get('session')->getFlashbag('blog-notice', 'Your contact enquiry was successfully sent. Thank you!');
// Redirect - This is important to prevent users re-posting
// the form if they refresh the page
return $this->redirect($this->generateUrl('contact'));
}
}
return $this->render('pages/contact.html.twig', array(
'form' => $form->createView(),
));
}
}
и вмой main.env файл У меня есть этот
MAILER_URL=smtp://localhost:25?encryption=ssl&auth_mode=login&username=xxx&password=xxxx
Так что электронная почта не доставляется.После отправки я возвращаюсь обратно на страницу контактов, и никаких флеш-сообщений тоже: / Я что-то пропустил, чтобы это сработало?
пример:
- должно ли мое имя пользователя быть целым адресом электронной почты, который мне также нужно декодировать и т. Д.?
- мне нужно также что-то изменить на сервере?пожалуйста, сообщите.