Bonjour,
Voila j'ai développé un site avec Laravel 5.5.
Dessus j'ai une page qui permet de lire un fichier CSV et d'envoyer un mail aux personnes dedans, j'ai voulu mettre cette partie dans un Job. en localhost pas de soucis, le fichier est upload, un coup de "php artisan queue:work" et le job est traité sans erreur, les email sont bien envoyé.
J'ai ensuite décidé de mettre mon site en production sur un mutualisé d'OVH :
l'email pour le mot de passe perdu marche, aucun soucis, mais lorsque je me rend sur ma page qui s'occupe du CSV, le fichier s'upload, le Job est traité sans erreur mais aucun email .
pour essayer de comprendre le problème j'ai essayé de nombreuses choses comme :
Voici ma config dans le .env
QUEUE_DRIVER=database
MAIL_DRIVER=mail
MAIL_HOST=smtp.mydomain
MAIL_PORT=587
MAIL_USERNAME=username@mydomain
MAIL_PASWWORD = ****
MAIL_ENCRYPTION=false
pretend=false
Ma ligne dans le Controller qui crée le Job
$this->dispatch(new LinkUsers($ELO_task)); //* new job here
La partie dans le Job qui envois les email
Mail::getSwiftMailer()->registerPlugin(new \Swift_Plugins_AntiFloodPlugin(50, 61));
if ($BOOL_new1){
Mail::to($ELO_usr1->email)->send(new InvitationMail($ELO_usr1->name,$ELO_usr1->fname,$ELO_usr1->id));
}else{
Mail::to($ELO_usr1->email)->send(new RequestParticipationMail($ELO_usr1->name,$ELO_usr1->fname));
}
if ($BOOL_new2){
Mail::to($ELO_usr2->email)->send(new InvitationMail($ELO_usr2->name,$ELO_usr2->fname,$ELO_usr2->id));
}else{
Mail::to($ELO_usr2->email)->send(new RequestParticipationMail($ELO_usr2->name,$ELO_usr2->fname));
}
Le fichier RequestParticipationMail.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class InvitationMail extends Mailable
{
use Queueable, SerializesModels;
/**
* @var
*/
public $name;
/**
* @var
*/
public $fname;
public $id;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($name, $fname,$i)
{
//
$this->name = $name;
$this->fname = $fname;
$this->id = $i;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this
->from("noreply@mydomain")
->markdown('mail.invitation');
}
}
Le fichier InvitationMail.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class RequestParticipationMail extends Mailable
{
use Queueable, SerializesModels;
/**
* @var
*/
public $name;
/**
* @var
*/
public $fname;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($name, $fname)
{
$this->name = $name;
$this->fname = $fname;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this
->from("noreply@mydomain")
->markdown('mail.notificationNewEvaluation');
Je voudrai pouvoir envoyer des email dans le Job
Voila, merci a ceux qui prendront le temps de m'aider !
Peut être la configuration du mode ligne de commande de PHP est différente de la version web. Tu arrive à envoyer un email via smtp en ligne de commande depuis OVH (avec un script php simple) ?
Bonsoir et merci de m'avoir répondu !
Pour tester ca je fais un petit script qui appele la fonction mail de php et je le lance en ligne de commande ?
Je viens de tester le script suivant :
<?php
require_once "swift_required.php"; //* J'ai télécharger la lib SwiftMailer et j'ai mis mon script dans le dossier
$aMailsDest = array("monadresse@gmail.com"=>"test");
// SMTP
$transport = Swift_SmtpTransport::newInstance("smtp.mydomain.com", 587)
->setUsername("noreply@mydomain.com")
->setPassword("****");
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance()
->setSubject("test mail")
->setFrom(array("noreply@mydomain.com" => "Nom de l expediteur"))
->setTo($aMailsDest)
->setBody("<h1>test email</h1>");
$type = $message->getHeaders()->get("Content-Type");
$type->setValue("text/html");
$type->setParameter("charset", "utf-8");
$result = $mailer->send($message);
echo $result;
Je l'ai testé sur mon ordinateur, le mail a bien été envoyé sur mon adresse mail, mais lorsque je l'ai testé sur le serveur OVH, je n'ai recu aucun mail et je n'ai eu aucune erreur, et le "echo $result;" n'affiche rien.