Décrivez ici votre problème ou ce que vous cherchez à faire.
Bonjour
J'ai travaillé un code qui recupere les emails dans une table et il fait l'envoi au fure et à mesure pour 200 à la fois. le probleme l'envoi se bloque quand il y a une erreur dans l'adresse mail ou l'email n'existe pas

Entourez votre code en utilisant "```" pour bien le mettre en forme. (ne copiez pas trop de code)
"' #[Route('/', name: 'home')]
public function index(MailerInterface $mailer,Request $request, EmailsRepository $repository):Response

{

//$mailing= new Emails();
$form=$this->createForm(EmailingType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()){
// $key=$form->get('state')->getData();
$next_id=$form->get('NextNumber')->getData();
// $min=200; $max=20;
$emails=$this->entityManager->getRepository(Emails::class)->findWithSearch($next_id);
// dd($emails);

//send mail
$count=0;
foreach($emails as $mail)
{

// $email = (new Email())
$email = (new TemplatedEmail())
->from('commercial@annuairesdz.com')

// ->to('bakli06@gmail.com')
//->to('bakli06@yahoo.fr')
->to($mail->getEmail())
//->bcc('bcc@example.com')
//->replyTo('fabien@example.com')
//->priority(Email::PRIORITY_HIGH)
->subject('Annuairesdz-Accompagnement des entreprises')
// ->text('Sending emails is fun again!')
->htmlTemplate('mail/emailing.html.twig');
// ->html('<p>See Twig integration for better HTML integration!</p>');

$mailer->send($email);
$count=$count+1;
}
// ...
return $this->render('mail/send.html.twig',[
'mailnumber'=>$count
]);
}
return $this->render('mail/index.html.twig',[
'form'=>$form->createView()
]);
}

'"

Ce que je veux

Décrivez ce que vous cherchez à obtenir.
je veux echaper les emails eroné ou les ignoré pour que le programme termine les 200 mails
Merci

Ce que j'obtiens

Décrivez vos éventuelles erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

6 réponses


Bonjour,
Fait une vérification sur les emails avant ?
Tu as une entité email dont la proriété "email" est vide ou ne respect pas la forme de "email" ?
Montre nous ton entité.
Prend le temps de décrire ton problème et ce que tu souhaites faire pour te conseiller plus facilement.

Merci Jessy
en fait je n'est pas d'entité mail j'ai seulement une base des emails que j'ai recuperer ailleur et je l'ai stocké dans une table (id, nom, emails)
dans mon code d'emailing je recupere 200 mails à la fois de la table puis je boucle pour l'envoi des 200 apres mon soucis la boucle s'arrete en cas ou l'email n'existe plus ou le dns de l'email ne fonctionne plus pour les emails eroné j'ai mis a jour le code pour valider l'email avant l'envoi
merci

Je pense que tu peux ajouter une condition du genre

if(!$mailer->send($email)){ // ajoute l'erreur dans une variable que tu lis après le foreach pour savoir quels emails n'ont pas été envoyés }

N'hésite pas à montrer l'erreur que tu as.

ca semble que c'est une bonne piste mais meme avec le if les emails dont le domaine non trouver contenu à intropre l'envoi. je pense comme tu disais une operation de filtre preable s'impose.
merci
voici l'erreur complete
Expected response code "250/251/252" but got code "450", with message "450 4.1.2 yousfi@ynfluencedz.com yousfi@ynfluencedz.com: Recipient address rejected: Domain not found".

Je pense que la meilleur approche serait d'ajouter à ton entity mail. Un propriété "enabled" qui serait un booléan.
Comme ça tu boucles sur tous tes mails activés. Si il ne fonctionne pas. Au lieu de le supprimer tu le désactive par exemple.

ça ne reste qu'une idée. Sinon pour le problème je ne sais pas trop. Une erreur de configuration du système d'envoie de mail ? A voir si qu'elqu'un à une idée.

Merci Jessy
j'ai pas de probleme dans l'envois quand un mail est correct en syntaxe et en existance pour le reste je dois revoir la liste global de mes emails