Estou tentando enviar um email para um usuário especificado digitando a URL, mas estou recebendo o seguinte erro:
Swift_TransportException na linha AbstractSmtpTransport.php 383: código de resposta esperado 250, mas obteve o código "530", com a mensagem "530 5.7.1 Autenticação necessária
Até agora, estou tentando fazê-lo funcionar com o Gmail. Como posso fazer isso funcionar?
Isto é o que eu tenho até agora: mail.php
<?php
return [
'driver' => env('MAIL_DRIVER',' smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' =>"[email protected]" , 'name' => "example"],
'encryption' => 'tls',
'username' => env('[email protected]'),
'password' => env('MyPassword'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
];
Isto é o que eu tenho nas rotas:
Route::get('test', function() {
Mail::send('Email.test', [], function ($message) {
$message->to('[email protected]', 'HisName')->subject('Welcome!');
});
});
Isto é o que eu tenho no meu controlador:
class MailController extends Controller
{
public function Sending_Email()
{
$this->call('GET','Email.test');
return View('Email.test');
}
}
E é isso que está no meu arquivo .env:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=MyUsername@gmail.com
MAIL_PASSWORD=MyPassword
php
laravel
laravel-5
email-integration
Vantheman6
fonte
fonte
Respostas:
Sei que está funcionando para você agora @ Vantheman6, mas é isso que funcionou para mim, caso seja o mesmo para outra pessoa.
Adicionei ao meu arquivo .env os detalhes do serviço de email que estou usando. Portanto, verifique se os seguintes detalhes
no arquivo .env são precisos.
NOTA: Não se esqueça de reiniciar o servidor após editar o arquivo .env, para que ele escolha os novos dados inseridos nele.
Se você não reiniciar o servidor, o arquivo .env continuará apresentando os dados de email antigos para o aplicativo, mesmo que você tenha feito alterações que possam causar esse erro.
fonte
php artisan config:cache
, a reinicialização do servidor não selecionará a configuração atualizada. Tente rodarphp artisan config:cache
novamenteMinha configuração de arquivo .env é assim para o laravel 5.1
A coisa mais importante aqui é que eu criei a senha específica do aplicativo do Gmail (16 dígitos).
Preciso revelar mais uma coisa, já que não tenho sorte em nenhuma configuração. Ou seja, sempre que eu alterava o arquivo .env, era necessário executar este comando
E isso é o mais importante porque, sem esse comando, o laravel executa as configurações anteriores do cache. Me levou mais de 10 horas para descobrir.
fonte
php artisan cache:clear
quandophp artisan config:cache
é o que resolveu para mim. Obrigado!php artisan config:cache
Você está recebendo um erro de autenticação porque o nome de usuário e a senha no seu arquivo de configuração estão configurados incorretamente.
Mude isso:
Para isso:
O
env
método verifica seu arquivo .env. No seu arquivo .env, você as chamaMAIL_USERNAME
, então é isso que você precisa passar para oenv
métodoUma dica para solução de problemas: adicione
dd(Config::get('mail'));
para que você possa ver a configuração real gerada . Isso o ajudará a identificar questões como essa e saber exatamente quais informações o Laravel tentará usar. Portanto, você pode interromper temporariamente a rota de teste para examinar o que possui:fonte
'password' => env('MAIL_PASSWORD'),
que acho interessante porque em todos os lugares me diz para inserir seu endereço de e-mail e senha para isso. Ainda estou recebendo um erroSwift_TransportException in AbstractSmtpTransport.php line 383: Expected response code 250 but got code "530", with message "530 5.7.1 Authentication required. I'm sorry but where do i actually place the "
dd(Config::get('mail'));
. o diretório Config contém muitos arquivos'host' => env('MAIL_HOST', 'smtp.gmail.com'),
MAIL_HOST
em seu arquivo .envMAIL_HOST=smtp.gmail.com
Então, o que acabei fazendo foi remover todo o env de cada parte do arquivo mail.php. E agora a informação correta está passando. OMG Obrigado, funcionou. Você é o homemo problema será resolvido limpando o cache
fonte
Finalmente eu consegui! Apenas para compartilhar, há mais configurações do que apenas .env
Este é .env
O config / mail.php também precisa inserir endereço e nome para que ele funcione.
fonte
Se você tiver o mesmo problema e tentar tudo online e não funcionar, provavelmente é o arquivo de cache de configuração que está enviando as informações incorretas. Você pode encontrá-lo em bootstrap / cache / config.php. Verifique se as credenciais estão lá. Levei uma semana para descobrir isso. Espero que isso ajude alguém algum dia.
fonte
Para fins de desenvolvimento, https://mailtrap.io/ fornece todas as configurações que precisam ser adicionadas no arquivo .env. Por exemplo:
Caso contrário, para fins de implementação, você poderá adicionar as credenciais smtp no arquivo .env pelo correio (como o gmail n all)
Após a adição, reinicie o servidor
fonte
Isso acontece comigo também.
Se ainda não funcionou, tente fazer
php artisan config:cache
fonte
Para referência futura a pessoas que vêm aqui. depois de executar o comando que foi fornecido na terceira resposta aqui ( agora estou usando o Laravel 5.3 ).
Você pode encontrar este problema:
Nesse caso, você precisa adicioná-lo novamente manualmente à sua lista de provedores no arquivo app.php. GO-TO:
app->config->app.php->'providers[]'
e adicione-o, assim:Espero que ajude alguém.
fonte
Eu tive o mesmo problema; meu
MAIL_ENCRYPTION
estavatls
ligado,mail.php
mas estavanull
no.env
arquivo.Então mudei
null
paratls
e funcionou!fonte
Nenhuma das soluções acima funcionou para mim no host local. Até permiti o acesso a partir de aplicativos menos seguros, o acesso através do captcha de desbloqueio de exibição e defina o ponto de verificação e o nome do ponto de verificação como false para SSL.
Eventualmente, usei a solução de teste SMTP de código aberto do MailHog. Os passos são os seguintes:
fonte
Isso significa simplesmente que seu servidor não tem acesso ao servidor SMTP.
Você pode testar isso fazendo:
Você deve receber o erro de acesso negado.
A solução é usar apenas outro servidor SMTP que possa ser acessado pelo seu servidor.
fonte
Você deve reiniciar o servidor e executar estes comandos:
Isso deve funcionar.
fonte
Se seus resultados
dd(Config::get('mail'));
forem nulos, basta usar o comandofonte
Minha opinião, depois de fazer alterações nos arquivos .env, reinicie o servidor e sirva o aplicativo novamente. Apenas para ter certeza do erro real. O php artisan clear e cache depois funcionam muito bem.
fonte
Eu tive o mesmo problema que você, acabei de fazê-lo funcionar.
Primeiro, você precisa verificar se as configurações .env estão definidas corretamente. Aqui estão as minhas configurações:
Certifique-se de que sua senha não esteja entre aspas :).
E no config / mail.php tem o seguinte, sem os comentários.
Espero que funcione para você :)
fonte
No meu caso: Reinicie o servidor e execute o
php artisan config:clear
comando.fonte
fonte