[RESOLU] Apprendre à envoyer un mail en PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Apprendre à envoyer un mail en PHP

Re: Apprendre à envoyer un mail en PHP

par wisefun77 » 20 sept. 2022, 10:57

Bonjour @rthur

Comme d'hab c'est toi le meilleur.

Merci à toi.

Re: Apprendre à envoyer un mail en PHP

par @rthur » 16 sept. 2022, 18:10

C'est un problème d'encodage de caractères.

Essaye en remplaçant
$headers[] = 'Content-type: text/html; charset=iso-8859-1';
par
$headers[] = 'Content-type: text/html; charset=utf-8';
Sinon tu peux aussi jouer avec les fonctions utf8_encode() / utf8_decode(), mais si ma 1ère solution marche c'est le plus simple :-)

Re: Apprendre à envoyer un mail en PHP

par wisefun77 » 16 sept. 2022, 15:52

Bonjour @rthur,
Je viens de faire un test depuis mon serveur OVH et tous fonctionne.
Il ne me reste plus qu'à trouver la solution pour que le texte soit conforme.

Code : Tout sélectionner

Demande de création de ticket REGUL Voici les anniversaires à venir au mois d'Août ! Personne Jour Mois Année Josiane 3 Août 1970 Emma 26 Août 1973
Merci beaucoup à toi.

Re: Apprendre à envoyer un mail en PHP

par wisefun77 » 16 sept. 2022, 15:25

Bonjour @rthur,

Merci pour toutes ses infos.
Je verrai donc Lundi quand je serais sur le serveur de la société.
Bon week-end.

Re: Apprendre à envoyer un mail en PHP

par @rthur » 16 sept. 2022, 14:03

Tu n'as pas indiqué l'expéditeur, forcément ça bloque ! :-D

Pour le serveur de ta société, demande au service informatique ils ont forcément un SMTP pour envoyer des mails et ça ne posera pas de problème vu que ton usage est légitime.


Pour envoyer un mail en ouvrant Outlook, il faut faire un lien mailto avec les bons paramètres :
https://www.rapidtables.com/web/html/mailto.html

Re: Apprendre à envoyer un mail en PHP

par wisefun77 » 16 sept. 2022, 13:45

Je crois que je vous prends la tête pour rien.
En fait ce qu'il faut vraiment c'est ouvrir Outlook de l'user et remplir le mail à sa place. Il n'aura plus qu'à faire envoyer lui-même.
Ce qui permettrait de ne pas avoir à paramétrer les connexions.
Est-ce possible ?

Merci beaucoup.

Re: Apprendre à envoyer un mail en PHP

par wisefun77 » 16 sept. 2022, 13:06

Bonjour @rthur,

Si j'ai bien compris je ne peux tester en LOCAL, je dois passer par un SMTP du FAI.
Si c'est idem sur le serveur IIS de la société, je pense que je ne pourrais faire les envois de mails car c'est surement bloqué par le proxy ou Antivirus de la Société. et je ne pourrais utiliser PHPMailer.
J'ai les tests.

Code : Tout sélectionner

<?php include 'header.php'; ?> <?php ini_set('SMTP','orange.fr'); // Plusieurs destinataires $to = '<toto@totocom>'; // Sujet $subject = 'Demande de création de ticket REGUL'; // message $message = ' <html> <head> <title>Calendrier des anniversaires pour Août</title> </head> <body> <p>Voici les anniversaires à venir au mois d\'Août !</p> <table> <tr> <th>Personne</th><th>Jour</th><th>Mois</th><th>Année</th> </tr> <tr> <td>Josiane</td><td>3</td><td>Août</td><td>1970</td> </tr> <tr> <td>Emma</td><td>26</td><td>Août</td><td>1973</td> </tr> </table> </body> </html> '; // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini $headers[] = 'MIME-Version: 1.0'; $headers[] = 'Content-type: text/html; charset=iso-8859-1'; // En-têtes additionnels $headers[] = 'To: HD <[email protected]>'; // $headers[] = 'From: Anniversaire <[email protected]>'; // $headers[] = 'Cc: [email protected]'; // $headers[] = 'Bcc: [email protected]'; // Envoi mail($to, $subject, $message, implode("\r\n", $headers)); ?>
l'erreur a changé.

Code : Tout sélectionner

PHP Warning: mail(): &quot;sendmail_from&quot; not set in php.ini or custom &quot;From:&quot; header missing in C:\inetpub\wwwroot\DevAdminPage-SansDossiers\mailenvoi1.php on line 44
Merci pour ton aide.

Re: Apprendre à envoyer un mail en PHP

par @rthur » 16 sept. 2022, 12:46

Ton serveur local n'est pas configuré pour envoyer des mails.

Soit tu installes un serveur SMTP, mais honnètement c'est galère à configurer sans erreur, et le risque que les mails que tu envoies tombent dans les spams est important.
Soit tu utilises un serveur SMTP tiers (celui de ton FAI, ou d'un service premium tel que Mailjet)

Pour utiliser un SMTP tiers 2 solutions simples sous Windows :
1) indiquer le SMTP (par exemple de ton FAI) dans le fichier php.ini (fais un phpinfo() pour trouver où il est)
Voici un exemple si tu es chez Orange :

Code : Tout sélectionner

; For Win32 only. ; http://php.net/smtp SMTP = smtp.orange.fr ; http://php.net/smtp-port smtp_port = 25
- Free : smtp.free.fr
- Orange : smtp.orange.fr
- Bouygues : smtp.bbox.fr
- SFR : smtp.sfr.fr

2) ou sinon tu peux utiliser une librairie en PHP type PHPMailer et indiquer un SMTP externe (comme Gmail, par exemple si tu as un compte Gmail).
https://github.com/PHPMailer/PHPMailer
Tuto : https://www.berejeb.com/2009/09/envoyer ... -de-gmail/

Re: Apprendre à envoyer un mail en PHP

par wisefun77 » 16 sept. 2022, 10:37

Bonjour @rthur,
str_replace() permet de faire ce que tu veux, c'est à dire remplacer une variable par sa valeur dans un contenu.
https://php.net/str_replace
Je ne vois pas le rapport avec str_replace(). MAis je garde ton info pour la suite.
Mon soucis est plus pour envoyer le mail, avec la fonction mail().
Mais j'ai cette erreur qui s'affiche.

Code : Tout sélectionner

PHP Warning: mail(): Failed to connect to mailserver at &quot;localhost&quot; port 25, verify your &quot;SMTP&quot; and &quot;smtp_port&quot; setting in php.ini or use ini_set() in C:\inetpub\wwwroot\DevAdminPage-SansDossiers\mailenvoi1.php on line 42
j'ai regardé le fichier php.ini en local, le port 25 est bien déclaré.
Mais je n'aurai pas la main sur le fichier php.ini du serveur IIS externe.
Merci à toi.

Re: Apprendre à envoyer un mail en PHP

par @rthur » 15 sept. 2022, 18:08

str_replace() permet de faire ce que tu veux, c'est à dire remplacer une variable par sa valeur dans un contenu.
https://php.net/str_replace

Apprendre à envoyer un mail en PHP

par wisefun77 » 15 sept. 2022, 11:43

Bonjour,

Je dois faire en sorte de pouvoir envoyer un mail depuis un formulaire en PHP.
Dans le mail il faut que la présentation soit respecter.
Image

Code : Tout sélectionner

<table> <tr> <td>Nom et/ou matricule Utilisateur</td> <td>$variableID</td> </tr> <tr> <td>Type d’intervention (INCIDENT ou DEMANDE)</td> <td>$variableINC</td> </tr> <tr> <td>Groupe d’assignation (assignement group)</td> <td>$variableGRP</td> </tr> <tr> <td>Affecté au technicien (Assigned to)</td> <td>$variableTECH</td> </tr> <tr> <td>Arbre de Cloture (Work Notes)</td> <td>$variableGNR</td> </tr> <tr> <td>Explications de l’intervention (close notes)</td> <td>$variableCMT</td> </tr> </table>
Nom et/ou matricule Utilisateur $variable
Type d’intervention (INCIDENT ou DEMANDE) $variable
Groupe d’assignation (assignement group) $variable
Affecté au technicien (Assigned to) $variable
Arbre de Cloture (Work Notes) $variable
Explications de l’intervention (close notes) $variable

Mais je ne sais pas comment débuter.
Merci par avance.