Проблема с получением сообщения в рабочей среде с помощью почтовой программы

#php #symfony #host #mailer

#php #symfony #хост #почтовая программа

Вопрос:

Всем доброго утра,

Я нахожусь под управлением symfony 4.4.

Я использую почтовую программу для отправки писем.

У меня есть два случая в моих приложениях. Я могу отправить электронное письмо каждому члену ассоциации.

И я могу отправлять массовые письма, которые я назвал созывом.

Оба работают локально, mailhog хорошо извлекает мои электронные письма.

Но в рабочей программе у меня нет ошибок, мне говорят, что все отправлено, однако только электронные письма от отдельных контактов доходят до получателей, но не все время.

Приглашения не приходят, но единственное различие между ними заключается в том, что для приглашений есть несколько электронных писем и шаблон с изображением.

Я нахожусь на 02switch. Я использовал все рекомендуемые порты, но они одинаковые: 465,26,25.

Мой mailer.yaml:

 framework:
    mailer:
        dsn: '%env(MAILER_DSN)%
 

my .env:

 ###> symfony/mailer ###
MAILER_DSN=smtp://lettonie.o2switch.net:26
###< symfony/mailer ###
 

мой контроллер для индивидуального контакта:

  $formcontact = $this->createForm(AdherentContactType::class);
        $contact = $formcontact->handleRequest($request);
        if($formcontact->isSubmitted() amp;amp; $formcontact->isValid()){
            $email = (new TemplatedEmail())
            ->from($contact->get('email')->getData())
            ->to($adherent->getEmail())
            ->subject('contact')
            ->htmlTemplate('emails/contact_adherent.html.twig')
            ->context([
                'adherent' =>$adherent,
                'mail' => $contact->get('email')->getData(),
                'message'=> $contact->get('message')->getData()
            ]);
            $mailer->send($email);
            $this->AddFlash(
                'success',
                "Votre email a bien été envoyé !"
            );
            return $this->redirectToRoute('adherent_show',['id' => $adherent->getId()]);
        }
 

Мой шаблон для отдельных контактов:

 <h1>Contact</h1>
<p>De : {{ mail }}</p>
 
<p>Message: {{ message|raw }}</p>
 

Мой контроллер для моих приглашений:

 if($team->getAdherents()!= null) {
        foreach ($team->getAdherents() as $c) {
            if($c->getEmail() != null){
                $mails[] = $c->getEmail();
            }
             
        }
    }
        if (isset($mails)) {
            $mails = array_combine($mails , $mails);
        }
        
      //var_dump($mails);exit();
   
     
           /***formulaire de contact*******/
           if (isset($mails)) {
           $formcontact = $this->createForm(ConvocationType::class,$mails,[
            'mails' => $mails,
        ]);
            
           $contact = $formcontact->handleRequest($request);
           if($formcontact->isSubmitted() amp;amp; $formcontact->isValid()){
 
             
             
            foreach ($contact->get('emailTo')->getData() as $c) {
                if($c != NULL){
                $emails[]= $c;} // Ou autre selon la fonction de ta class Adhérent   
                else {
                $emails[]= null;}
                }
   // dump($emails);exit;
             if(isset($mails) and isset($emails)){
               $email = (new TemplatedEmail())
               ->from($contact->get('email')->getData())
               ->to(...$emails)
               ->subject('contact')
               ->htmlTemplate('emails/convocation_match.html.twig')
               ->context([
                  'catadherent' =>$catadherent,
                  'mail' => $contact->get('email')->getData(),
                  'mailTo'=>$contact->get('emailTo')->getData(),
                  'team'=> $team->getName(),
                  'convocation_date'=>$contact->get('convocation_date')->getData(),
                  'club_adverse'=>$contact->get('club_adverse')->getData(),
                  'rendez_vous_date'=>$contact->get('rendez_vous_date')->getData(),
                  'lieu'=>$contact->get('lieu')->getData(),
                  'match_date'=>$contact->get('match_date')->getData(),
                  'stade'=>$contact->get('stade')->getData(),
 
               ]);
               $mailer->send($email);
               $this->AddFlash(
                   'success',
                   "Votre email a bien été envoyé !"
               );
               //return $this->redirectToRoute('adherent_show',['id' => $adherent->getId()]);
              }
              else{
                $this->AddFlash(
                    'danger',
                    "Votre email n'a pas été envoyé car aucun mail n'a été sélectionné !"
                );
              }
            }
        }
 

мой шаблон ветки для моих приглашений:

 {# '@images/' refers to the Twig namespace defined earlier #}
<center><img src="{{ email.image('@images/logo/uspeg-tr.gif') }}" width="200" height="200" alt="Logo">
<h1>Convocation</h1>
<p>De : {{ mail }}</p>
<div>
Equipe:{{team}}            
</div>
<div>
<p>Tu es convoqué le <strong>{{convocation_date|date("d/m/Y") }}</strong>  pour le match contre <strong>{{club_adverse}}</strong> ».</p><br>
 
<p>Le rendez-vous est fixé le <strong>{{rendez_vous_date|date("d/m/Y \à G:i") }}</strong> au <strong>{{ lieu }}</strong>.</p><br>
 
<p>Le match se déroulera le <strong>{{ match_date|date("d/m/Y \à G:i") }}</strong>  précise au stade <strong>{{ stade }}</strong>.
</p>
<br>
<p style="color:red;"><strong> Prévenir impérativement l’éducateur en cas d’empêchement le plus tôt possible.</strong></p>
</div></center>
 

Я действительно не знаю, в чем может быть проблема.

У кого-нибудь есть идея?

Заранее благодарю вас.

Комментарии:

1. Не доставляемые электронные письма могут иметь МНОЖЕСТВО причин. Когда вы отправляете это не означает, что оно доставлено, просто оно было отправлено. Я рекомендую использовать API электронной почты для такого рода заданий или использовать отдельное программное обеспечение / приложение только для доставки электронной почты.

2. Я кое-что заметил. Когда я добавляю контактную электронную почту в Gmail или orange, она не приходит, но когда я отправляю электронное письмо sfr, чтобы можно было повторно связаться со мной, оно приходит, я говорю об отдельных письмах. Его нужно отфильтровать, но как вы с этим справляетесь?

Ответ №1:

Это хорошо, что я нашел. Я поставил решение, если кто-то столкнулся с проблемой. Мое беспокойство исходило от From. FROM всегда должен быть почтовым ящиком домена, в котором расположен сайт, и я получил его с моего адреса электронной почты, введенного в моих полях формы.