[RESOLU] Envoi mail PHP sendmail

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

29 janv. 2021, 14:30

Si tu héberges ton script PHP sur OVH, il n'y a pas besoin d'installer quoique ce soit.
Utilise simplement la fonction mail(), tu peux notamment prendre l'exemple #2 de la doc que tu mets dans un nouveau script PHP (en changeant les adresses d'expéditeur et de destinataire) et ça va marcher :
https://www.php.net/manual/fr/function.mail.php
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 88 Messages

29 janv. 2021, 16:14

c'est gentil de me dire ca :cry: j'avoue que j'arrive pas :( ca fait un moment que je suis là dessus!!
je lis tant de messages aussi ou ils ont tous finalement des soucis ! moi j'arrive pas :non: |*() |*() |*()


j'ai ete sur manual php et je penseavoir suivi mais bon !!!
j'ai trouvé aussi un autre tto pour utiliser phpmail :

ils disent de mettre un fichier testmail dans dossier public:
}
$to      = '[email protected]';
$subject = 'test';
$message = 'hello';
$headers = array(
    'From' => '[email protected]',
    'Reply-To' => '[email protected]',
);

mail($to, $subject, $message, $headers);

$text = str_replace("\n.", "\n..", $text);

$success = mail('[email protected]', 'My Subject', $message);
if (!$success) {
    $errorMessage = error_get_last()[' message test bien receptionné!!!'];
}
?>
je suis allée aussi selon les infos sur l interface de mon operateur free et ai fait :
Pour utiliser cette fonction, assurez-vous que votre fournisseur d’hébergement vous permet de gérer manuellement l’option du service Sendmail.
donc j'ai autorisé!!

voilà toujours le meme message :
mail (): réponse du serveur SMTP: 550 expéditeurs non authentifiés non autorisés

faut il que je remodifie encore un truc dans mon php.ini? là j'ai mis : [mail function]
; For Win32 only.
; http://php.net/smtp
SMTP= localhost
; http://php.net/smtp-port
smtp_port = 1025

bon allez je vais y arriver je vais y arriver !!!!!!! la question c'est quand!!!! :(
ce qui me chagrine et qui me donne la niak en plus pour y arriver c'est que mon mentor(que j'ai plus) m'a dit! laisse tomber c'est pas grave si ca marche pas!!!!!! et ca nan je peux pas si c'est important

Petit nouveau ! | 7 Messages

29 janv. 2021, 18:16

Bonjour,
Je vous apporte mes solutions en espérant que cela pourra aider,
Pour y avoir galéré durant des mois a mes débuts, j'ai enfin trouver des solutions (qui me conviennent).

Pour envoyer un mail sous Windows, sans la configuration particulière avec sendmail, je vous conseil d'utiliser https://github.com/ChangemakerStudios/Papercut-SMTP qui est très pratique et facilement utilisable.

Après, je vous conseille vraiment d’utiliser cette libraire assez connu, modulable, pour php, ça facilitera les choses : https://github.com/PHPMailer/PHPMailer

Voici un service gratuit permettant de recevoir les mail et pièces jointes https://ethereal.email
Sous linux, en utilisant PHPMailer et maildev

Code : Tout sélectionner

npm install maildev
ou https://ethereal.email tout devient plus simple.

Cordialement,
En espérant vous avoir aide

Eléphant du PHP | 88 Messages

29 janv. 2021, 18:53

Merci je vais essayer tout ca et reviendrai donner la finalité !!! ouille espoir espoir mais merci bcp

Petit nouveau ! | 7 Messages

29 janv. 2021, 19:00

ça va le faire.

Eléphant du PHP | 88 Messages

29 janv. 2021, 20:34

merci pour l'encouragement!! j'en ai grand besoin en plus !

Alors Ouiiii avec de l'aide j'ai reussi à installer MailDev :) :) petit tuyau qu'un type sympa m'a expliqué : en ce moment sur cette installation ya un souci sur l'adresse : pas mettre local.dev:1080 mais 127.0.0.1:1080 ca peut servir peut etre !!

Bon une fois cela dit : j'ai pas tout reglé !!! j'ouvre mail Dev mais mon envoi ne marche pas!!!
voilà mon code de mon fichier index.php:
<?php


$message = "Line 1\r\nLine 2\r\nLine 3";

// Dans le cas où nos lignes comportent plus de 70 caractères, nous les coupons en utilisant wordwrap()
$message = wordwrap($message, 70, "\r\n");

// Envoi du mail
mail('[email protected]', 'Mon Sujet', $message);

$to = '[email protected]';
$email_subject = "blog php projet 5:" . $_POST['name'];
$email_body = "vous avez recu un nouveau message de "; // : .\n\n"." details:\n\nName: $userName\n\nEmail: $email_address\n\nPhone: $phoneNumber\n\nMessage:\n$accueilMsg";
$headers = "From: mon [email protected]\n";
$headers .= "Reply-To:" . $_POST['email'];
mail($to,$email_subject,$email_body,$headers);

et voici toujours cette maudite erreur: mail(): SMTP server response: 550 Unauthenticated senders not allowed!!!

j'ai bien modifié mon php.ini avec :[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = 127.0.0.1
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 1025 et redemarré mon wamp
mais impossible de revenir sur ma page accueil je suis coincee :( le souci c'est qu'en cherchant cette erreur sur le net : ca me ramene toujours à sendgrid et c'est pas sendgrid!!!

Petit nouveau ! | 7 Messages

29 janv. 2021, 20:38

Est-ce que maildev écoute sur ton port 1025 ? as-tu essaye Papercut c'est juste un .exe a lancer!

Eléphant du PHP | 88 Messages

29 janv. 2021, 20:47

oui en principe c'est le port 1025 !! Papercut j'ai commencé je l'ai telechargé mais je m'y suis pas trop penchée comme j'avais reussi avec MailDev!!
et que c'est qu'une histoire de ce satané code !!

je viens de telecharger papercut :: ok j'ai une jolie fenetre papercut smtp avec tout ce qu'il faut pour un mail mais apres?
:-k :-k je vois pas trop

Petit nouveau ! | 7 Messages

30 janv. 2021, 07:25

Dans les parametres en haut a droite, tu peux paramétrer l'ip et le port d'ecoute

Eléphant du PHP | 88 Messages

30 janv. 2021, 12:44

hello oui j'ai mis mais mon souci c'est que je ne me debarrasse plus du message : message "mail(): SMTP server response: 550 Unauthenticated senders not allowed" et que je ne reviens meme plus sur ma page formulaire :(

Eléphant du PHP | 88 Messages

01 févr. 2021, 21:14

Hello !! Je viens de reussir à recevoir 1 mail dans MailDev!!!!!!! pas 2 UN!! j'ai oté mon parefeu!!!! et j'ai recu un mail de l'apm !!! halucinant

impossible d'en recevoir un autre car maintenant j'ai une erreur : Trying to access array offset on value of type bool!!! à la ligne view = $match['target']

sur mon fichier :
    public function run(): self
    {
        $match = $this->router->match();
      $view = $match['target'] ?: 'e404';
        $params = $match['params'];
        $router = $this;
        $isAdmin = strpos($view, 'admin/') !== false;
        $layout = $isAdmin ? 'admin/layouts/default' : 'layouts/default';

        try {
            ob_start();
            require $this->controllerPath  . DIRECTORY_SEPARATOR . $view . '.php';
            $content = ob_get_clean();
            require $this->viewsPath  . DIRECTORY_SEPARATOR . $layout  . '.php';
        } catch (ForbiddenException $e) {
            header('Location: ' . $this->url('login') . '?forbidden=1');
            exit();
        }
        return $this;
je comprends pas :roll:
:(

je comprends pas car j'ai pas modifié et ma function match et en plus je suis en methode POST!!
public function match(string $url, string $view, ?string $name = null): self
{
$this->router->map('POST|GET', $url, $view, $name);

return $this;
}

Eléphant du PHP | 88 Messages

02 févr. 2021, 15:50

HELLO !! ne me demandez pas pk ce matin en tentant à nouveau d'envoyer un mail -> MIRACLE : mail apparait mais pas dans MailDev mais dans PAPERCUT SMTP!!!!!! no comment
en revanche ! comme je suis tenace :) mon message est vide !!! j'ai testé avec mon var dump $_POST: tous mes champs sont bien dans mon array
array:4 [▼
"name" => "CHRISTOPHE "
"email" => "[email protected]"
"phone" => "0123031258"
"message" => "Testttt"

dans mon controller j'ai fait plusieurs test ( sans ce qui est commenté) :
ini_set('sendmail_from','[email protected]');
$to = '[email protected]';
$email_subject = "blog php projet 5:" . $_POST['name'];
$email_body = "vous avez recu un nouveau message de ";
$message = "Line 1\r\nLine 2\r\nLine 3";
$message = wordwrap($message, 70, "\r\n");
$headers = "From: [email protected]\n";


$headers .= "Reply-To:" .  $_POST['email'];

[color=#FF0080]/*$message = "name: " . $to . "\n\n" . "email: " . $email_subject . "\n\n" . "phone: " . $phone . "\n\n" . "message: " . $message . "\n\n" .*/[/color]

mail($to, $email_subject, $email_body, $message, $headers);
alors j'ai testé ma variable $message : rien :( evidemment mais mon champs dans mon formulaire est bien name: message !

Dans mon PAPERCUT : j'ai bien de rempli :
from
to
date
subject
je vois donc Line1 line2 line 3
vous avez reçu un message mais ce que rempli la personne dans le formulaire avant l'envoi :: NON "message" => "Testttt"
CE qui apparait dans mon var dump j'ai pas !!
qu'est ce que je fais encore mal?

merci pour vos retours

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 févr. 2021, 18:16

Hello !

Je ne vois pas bien dans ton code, à quel moment est-ce que tu fais appel à $_POST['message'] pour récupérer le message envoyé par l'utilisateur et le mettre dans ta variable $message qui est utilisée dans le corps du mail ? :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 88 Messages

02 févr. 2021, 19:56

merci Ryle tu as completement raison !! je viens de m'en rendre compte !! quelle cruche !!!
au prochain souci? :) merci à toi j'ai encore plein de souci :(


Hello je mets ce sujet :: RESOLU !!!! j'ai reussi -> merci à tous ceux qui m'ont envoyés des idees et infos !!
j'apprends , j'avance, j'ai meme inové avec le manuel php !
j'ai ajouté mes fameuses variables $_POST dans mes variables $headers $message
c'est tout bon !!! j'espere que ca le sera encore demain matin

voilà ce que j'ai reussi à faire :
<?php

ini_set('sendmail_from','[email protected]');
$to = '[email protected]';
$email_subject = "blog php projet 5 - envoi d'un mail de la page d'accueil";
$email_body = "vous avez recu un nouveau message de :" . $_POST['name'] ;
$message = "\n\r adresse mail: " . $_POST['email'] . "\r\n numero tel: " . $_POST['phone'] . " \r\n Message: " . $_POST['message'];
$headers = "From: [email protected]\n";
$headers .= "Reply-To:" . $_POST['email'];

mail($to, $email_subject, $message, $headers, $email_body);

Bon courage à tous