php send - Essayer d'obtenir Laravel 5 email pour travailler





tutorial smtp (13)


Finalement j'ai eu! Juste pour partager, il y a plus de config que juste .env

C'est .env

MAIL_DRIVER=smtp

MAIL_HOST=smtp.gmail.com

MAIL_PORT=587

[email protected]

MAIL_PASSWORD=********

MAIL_ENCRYPTION=tls

config / mail.php doit également entrer l'adresse et le nom pour que cela fonctionne.

'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' => '[email protected]' , 'name' => 'YourName' ],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,

J'essaye d'envoyer un email à un utilisateur spécifié en tapant l'URL, mais j'obtiens l'erreur suivante:

Swift_TransportException dans AbstractSmtpTransport.php ligne 383: Code de réponse attendu 250 mais le code "530" a été reçu, avec le message "530 5.7.1 Authentification requise

Jusqu'à présent, j'essaie juste de le faire fonctionner avec Gmail. Comment puis-je faire en sorte que cela fonctionne?

C'est ce que j'ai jusqu'à présent: 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,
];

C'est ce que j'ai dans les routes:

Route::get('test', function()
{
Mail::send('Email.test', [], function ($message)
{
    $message->to('[email protected]', 'HisName')->subject('Welcome!');
});
});

C'est ce que j'ai dans mon contrôleur:

class MailController extends Controller{
public function Sending_Email()
{
   $this->call('GET','Email.test');
    return View('Email.test');
}

}

Et voici ce que contient mon fichier .env:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=MyPassword



j'ai eu le même problème; mon 'MAIL_ENCRYPTION' était 'tls' sur mail.php mais c'était 'null' sur le fichier .env donc j'ai changé 'null' en 'tls' et ça a marché!




J'ai eu le même problème que toi, je l'ai juste fait fonctionner.

Tout d'abord, vous devez vérifier que les paramètres .env sont correctement configurés. Voici mes paramètres:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=yourusername
MAIL_PASSWORD=yourpassword
MAIL_ENCRYPTION=tls

S'il vous plaît assurez-vous que votre mot de passe n'est pas entre guillemets :).

Et dans config / mail.php il a ce qui suit, sans les commentaires.

<?php

return [

'driver' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', '587'),
'from' => ['address' => 'yourusername', 'name' => 'yourname'],
'encryption' => env('MAIL_ENCRYPTION','tls'),
'username' => env('MAIL_USERNAME', '[email protected]'),
'password' => env('MAIL_PASSWORD', 'password'),
'sendmail' => '/usr/sbin/sendmail -bs',

'pretend' => false,

];

J'espère que ça marche pour toi :)




Si jamais vous avez le même problème et que vous essayez tout en ligne et que cela ne fonctionne pas, c'est probablement le fichier de cache de configuration qui envoie les mauvaises informations. Vous pouvez le trouver dans bootstrap / cache / config.php. Assurez-vous que les informations d'identification sont correctes. Il m'a fallu une semaine pour comprendre cela. J'espère que cela aidera quelqu'un un jour.




Aucune des solutions ci-dessus n'a fonctionné pour moi sur localhost. J'ai même autorisé l'accès à partir d'applications moins sécurisées, j'ai autorisé l'accès via l'affichage de la fonction de déverrouillage captcha et j'ai défini l'homologue de vérification et vérifié que le nom de l'homologue était faux pour SSL.

Finalement, j'ai utilisé la solution de test SMTP open source de MailHog. Les étapes sont les suivantes:

  1. Téléchargez la dernière version de MailHog pour votre système d'exploitation
  2. Spécifiez les paramètres suivants dans votre fichier .env

MAIL_DRIVER = smtp

MAIL_HOST = 127.0.0.1

MAIL_PORT = 1025

MAIL_USERNAME = testuser

MAIL_PASSWORD = testpwd

MAIL_ENCRYPTION = null

[email protected]

  1. Exécutez le fichier téléchargé de MailHog
  2. Envoyer un email
  3. Vérifiez envoyé un email en allant à localhost: 8025



le problème sera résolu en effaçant le cache

php artisan config:cache



Vous obtenez une erreur d'authentification car le nom d'utilisateur et le mot de passe de votre fichier de configuration sont incorrects.

Change ça:

'username' => env('[email protected]'),
'password' => env('MyPassword'),

Pour ça:

'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),

La méthode env vérifie votre fichier .env. Dans votre fichier .env, vous appelez ces MAIL_USERNAME , c'est ce que vous devez transmettre à la méthode env .

Un conseil de dépannage: ajoutez dd(Config::get('mail')); de sorte que vous pouvez voir la config réelle générée . Cela vous aidera à repérer les problèmes de ce genre et à savoir exactement quelles informations Laravel va essayer d'utiliser. Donc, vous voudrez peut-être arrêter cela dans votre route de test temporairement pour examiner ce que vous avez:

Route::get('test', function()
{
    dd(Config::get('mail'));
});



À des fins de développement, https://mailtrap.io/ vous fournit tous les paramètres qui doivent être ajoutés au fichier .env. Par exemple:

Host:   mailtrap.io
Port:   25 or 465 or 2525
Username:   cb1d1475bc6cce
Password:   7a330479c15f99
Auth:   PLAIN, LOGIN and CRAM-MD5
TLS:    Optional

Sinon, à des fins de mise en œuvre, vous pouvez obtenir les informations d'identification smtp à ajouter dans le fichier .env de la messagerie (comme gmail n all)

Après l'ajout, assurez-vous de redémarrer le serveur




Cela m'arrive aussi.

C'est parce que lorsque nous .env fichier .env , nous devons redémarrer le serveur. Arrêtez simplement le php artisan serve actuel et recommencez-le. Cela fonctionnera à coup sûr.

Si ce n'est pas encore fait, essayez de faire php artisan config:cache




Ma configuration de fichier .env est comme ça pour laravel 5.1

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=****************
MAIL_ENCRYPTION=tls

ici la chose la plus importante est que j'ai créé le mot de passe spécifique de l'application gmail (16 chiffres).

Je dois révéler une chose de plus, car aucune chance pour la configuration. Autrement dit, chaque fois que j'ai changé le fichier .env besoin d'exécuter cette commande

php artisan config:cache

Et c'est le plus important, car sans cette commande, laravel exécute les paramètres précédents de son cache. Il m'a fallu plus de 10 heures pour comprendre.




  1. Vous allez au Mailgun
  2. Cliquez sur Destinataires autorisés
  3. Ajouter l'adresse e-mail que vous souhaitez envoyer un mail.
  4. Vérifiez le message envoyé au courrier.
  5. Bravo! ... Tu es bon à faire.



Cela signifie simplement que votre serveur n'a pas accès au serveur SMTP.

Vous pouvez tester cela en faisant

telnet <smtpServer> <smtpPort>

Vous devriez obtenir l'erreur Accès refusé.

La solution consiste simplement à utiliser un autre serveur SMTP auquel votre serveur peut accéder.




Il y a un conseil dans la documentation de Laravel sur la façon de procéder. Cela n'était peut-être pas disponible au moment de la question, mais je pensais le mettre à jour avec une réponse.

http://laravel.com/docs/master/routing#csrf-x-csrf-token

J'ai testé la méthode de la balise meta à partir de la documentation et l'ai utilisée. Ajoutez la balise META suivante dans votre modèle global

<meta name="csrf-token" content="{{ csrf_token() }}">

Ajoutez ce JavaScript qui définit les valeurs par défaut pour toutes les requêtes ajax dans jQuery. De préférence dans un fichier js inclus dans votre application.

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
})

Ce jeton peut exister dans l'en-tête de requête ou le formulaire. Cela le remplit dans l'en-tête de requête de chaque requête ajax.





php laravel laravel-5 email-integration