Адрес в почтовом ящике [] не соответствует RFC 2822, 3.6.2. когда электронная почта находится в переменной

У меня правильный адрес электронной почты. Я повторил это, но когда я отправляю это, я получаю следующую ошибку:

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

Зачем? Я использую Laravel (Swift Mailer) для отправки электронной почты:

$email = [email protected]

и затем, когда я отправляю его, выдается ошибка.

Но если я напрямую использую строку, она отправляет ее.

Вот блок:

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

Ответы

Ответ 1

Ваша переменная электронной почты пуста из-за области действия, вы должны установить условие использования, такое как:

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

Ответ 2

(Я использую SwiftMailer в PHP)

Я получал ошибку, когда я случайно отправил строку для $email

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

Когда то, что я хотел отправить, было

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

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

Ответ 3

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

print_r ($ variable_passed);

Ответ 4

Я столкнулся с той же проблемой, и я исправил ее. Пожалуйста, убедитесь, что некоторые вещи написаны ниже:

   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 !');

                    });

Это должен быть ваш email.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>
       ---- 

Ответ на вопрос, почему вы не можете перечислить переменную $email в функцию отправки почты. Вам нужно вызвать переменную $user, тогда вы можете написать нужную переменную в виде $user- > variable

Спасибо:)

Ответ 5

 Mail::send('emails.activation', $data, function($message){
        $message->from('[email protected]', 'name');
        $message->to($email)->subject($subject);
    });

Я не знаю, почему, но в моем случае я помещаю информацию из функции в функцию, и она работает нормально.

Ответ 6

Это потому, что отправляемый адрес электронной почты пуст. см. эти пустые скобки? это означает, что адрес электронной почты не помещается в $address функции swiftmailer.

Ответ 7

Переменные данных ($ email, $subject) кажутся глобальными. И глобалы не могут быть прочитаны внутри функций. Вы должны передать их как параметры (рекомендуемый путь) или объявить их глобальными.

Попробуйте следующим образом:

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

Ответ 8

Эта ошибка возникает, когда переменная $email пуста или иногда, когда почта не существует, попробуйте с существующей почтой

Ответ 9

Попробуйте это.

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

Ответ 10

У меня была очень похожая проблема сегодня, и решение было как есть.

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

Это laravel 5.2, хотя...

Моя основная проблема заключалась в том, что я передавал строку вместо массива, поэтому ошибка была

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

Ответ 11

[Решено] Neos/swiftmailer: адрес в указанном почтовом ящике [] не соответствует RFC 2822, 3.6.2

Исключение в строке 261 файла /var/www/html/vendor/Packages/Libraries/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php: Адрес в указанном почтовом ящике [] не соответствует RFC 2822, 3.6 0,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

Ответ 12

Ваша проблема может заключаться в том, что файл .env загружается неправильно и использует MAIL_USERNAME.

Чтобы проверить, загружает ли ваш файл .env адрес электронной почты, добавьте эту строку в ваш контроллер и обновите страницу.

dd(env('MAIL_USERNAME') 

Если он отображается как null, попробуйте выполнить следующую команду из командной строки и повторите попытку.

php artisan cache:clear