web-dev-qa-db-fra.com

L'adresse dans la boîte aux lettres donnée [] n'est pas conforme à la RFC 2822, 3.6.2. quand l'email est dans une variable

J'ai une adresse email correcte. Je l'ai fait écho. mais quand je l'envoie, j'obtiens l'erreur suivante:

 Address in mailbox given [] does not comply with RFC 2822, 3.6.2. 

Pourquoi? J'utilise laravel (Swift mailer) pour envoyer un email.

$ email = [email protected]

et puis quand j'envoie ça, l'erreur est renvoyée.

Mais si j'utilise directement la chaîne, elle l'envoie.

Voici le bloc:

 Mail::send('emails.activation', $data, function($message){
            $message->to($email)->subject($subject);
        });
                ->with('title', "Registered Successfully.");
21
user3077503

Votre variable email est vide en raison de la portée, vous devez définir une clause d'utilisation telle que:

Mail::send('emails.activation', $data, function($message) use ($email) {
    $message->to($email)->subject($subject);
});
11

(J'utilise SwiftMailer en PHP)

Je recevais une telle erreur quand j'envoyais accidentellement une chaîne pour $ email

$email = "[email protected] <Some One>";

Quand ce que je voulais envoyer était

$email = Array("[email protected]"=>"Some One");

J'exécutais accidentellement cette tâche via une fonction stringify que j'utilisais pour la journalisation. Ainsi, une fois que j'ai commencé à envoyer le tableau à nouveau, l'erreur a disparu.

3
Ghost8472

assurez-vous que votre variable d'adresse e-mail n'est pas vide. vérifier en utilisant

print_r ($ variable_passed);

3

C'est parce que l'adresse e-mail qui est envoyée est vide. voir ces crochets vides? cela signifie que l'adresse email n'est pas mise dans l'adresse $ de la fonction swiftmailer.

1
Bidhan Mondal

J'ai rencontré le même problème et j'ai corrigé. S'il vous plaît assurez-vous que certaines choses comme écrit ci-dessous: 

   Mail::send('emails.auth.activate', array('link'=> URL::route('account-activate', $code),'username'=>$user->username),function($message) use ($user) {
                        $message->to($user->email , $user->username)->subject('Active your account !');

                    });

Cela devrait être votre emails.activation

    Hello {{ $username }} , <br> <br> <br>

    We have created your account ! Awesome ! Please activate by clicking the   following link <br> <br> <br>
   ----- <br>
      {{ $link }} <br> <br> <br>
       ---- 

La réponse à votre pourquoi vous ne pouvez pas appeler la variable $ email dans votre fonction d'envoi de courrier. Vous devez appeler la variable $ user, puis vous pouvez écrire votre variable souhaitée sous la forme $ user-> variable

Je vous remercie :)

1
MD. Atiqur Rahman
 Mail::send('emails.activation', $data, function($message){
        $message->from('email@from', 'name');
        $message->to($email)->subject($subject);
    });

Je ne sais pas pourquoi, mais dans mon cas, j'ai mis les informations de de dans la fonction et tout fonctionne bien.

1
Jonathan Machado

J'ai eu un problème très similaire aujourd'hui et la solution était telle qu'elle est ..

$email = Array("Zaffar Saffee" => "[email protected]");
        $schedule->command('cmd:mycmd')
                 ->everyMinute()
                 ->sendOutputTo("/home/forge/dev.mysite.com/storage/logs/cron.log")
                 ->emailWrittenOutputTo($email);

Il laravel 5.2 si ...

mon problème de base était, je passais chaîne au lieu de tableau donc, erreur était 

->emailWrittenOutputTo('[email protected]'); // string, we need an array
0
Zaffar Saffee

Votre problème peut être que le fichier .env ne se charge pas correctement et n’utilise pas MAIL_USERNAME.

Pour vérifier si votre fichier .env charge correctement l'adresse électronique, ajoutez cette ligne à votre contrôleur et actualisez la page. 

dd(env('MAIL_USERNAME') 

Si NULL apparaît, essayez d'exécuter la commande suivante à partir de la ligne de commande, puis essayez à nouveau.

php artisan cache:clear
0
Jeff Zeller

Essaye ça.

Mail::send('emails.activation', $data, function($message) use($email,$subject){
            $message->to($email)->subject($subject);
        });
                ->with('title', "Registered Successfully.");
0
KTAnj

Ces erreurs se produisent lorsque la variable $ email est vide ou parfois lorsque le mail n’existe pas, essayez avec un mail existant

0
fsalazar_sch

Les variables de données ($ email, $ sujet) semblent être globales. Et les globals ne peuvent pas être lus à l'intérieur des fonctions. Vous devez les transmettre en tant que paramètres (méthode recommandée) ou les déclarer en tant que paramètres globaux.

Essayez de cette façon:

Mail::send('emails.activation', $data, function($message, $email, $subject){
        $message->to($email)->subject($subject);
    });
            ->with('title', "Registered Successfully.");
0
WebHQ

[Résolu] Neos/swiftmailer: l'adresse dans la boîte aux lettres donnée [] n'est pas conforme à la RFC 2822, 3.6.2

Exception à la ligne 261 de /var/www/html/vendor/Packages/Libraries/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php: l'adresse dans la boîte aux lettres donnée [] n'est pas conforme à la RFC 2822, 3.6 .2.

private function _assertValidAddress($address)
{
    if (!preg_match('/^'.$this->getGrammar()->getDefinition('addr-spec').'$/D',
        $address)) {
        throw new Swift_RfcComplianceException(
            'Address in mailbox given ['.$address.
            '] does not comply with RFC 2822, 3.6.2.'
            );
    }
}

https://discuss.neos.io/t/solved-neos-swiftmailer-address-in-mailbox-given-does-not-comply-with-rfc-2822-3-6-2/3012

0
Matthew Farrell