8768 sujets

Développement web côté serveur, CMS

En fait, j'ai 2 problèmes...

1er ;

Les courriel s'en vont bien sur le serveur d'hébergement, j'ai programmé une redirection mais ils ne sont pas redirigés dans la boîte de destination! Le support tech du serveur à vérifié, il dit qu'il sont bien redirigé. J'ai fait un "trace" et je vois bien que oui!
PAR CONTRE, lorsque le courriel est envoyé de par un courriel perso, il est bien redirigé mais NON lorsqu'il est envoyé par le formulaire sur la page web!!! ( à n'y rien comprendre)

2ième;

Les Infos ( $e_reply = ) n’apparaissent pas dans le courriel reçu ? !

Si ça peut aider, le lien du site:
groupeenergiequebec.ca

MERCI DE VOTRE PRÉCIEUSE AIDE!

------------------------------------
Le formulaire sur ma page html:

<form method="post" action="php/contact-form.php" name="contactform" id="contactform">
                                <fieldset>
                                        <input name="name" type="text" id="name" placeholder="Nom"/> 
                                        <input name="phone" type="text" id="phone" placeholder="Téléphone"/>   
                                        <input name="home" type="text" id="home" placeholder="Adresse"/>
                                        <input name="city" type="text" id="city" placeholder="Ville"/>
                                        <input name="email" type="text" id="email" placeholder="Courriel"/> 
                                </fieldset>
                                
                                <input type="submit" class="submit" id="submit" value="Envoyer" />
                            </form>


------------------------------

contact-form.php:

<?php


if(!$_POST) exit;

// Email address verification, do not edit.
function isEmail($email) {
	return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));
}

if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");

$name     = $_POST['name'];
$phone     = $_POST['phone'];
$email     = $_POST['email'];
$home   = $_POST['home'];
$city   = $_POST['city'];
$verify   = $_POST['verify'];

if(trim($name) == '') {
	echo '<div class="error_message">Vous devez écrire votre nom.</div>';
	exit();
} else if(trim($email) == '') {
	echo '<div class="error_message">s.v.p. Entrez une adresse valide (@)!</div>';
	exit();
} else if(!isEmail($email)) {
	echo '<div class="error_message">Adresse non valide, veuillez réassayer s.v.p..</div>';
	exit();
}



// Configuration option.
// Enter the email address that you want to emails to be sent to.

//$address = "example@example.com";
$address = "info@groupeenergiequebec.ca,";



// Configuration option.
// i.e. The standard subject will appear as, "You've been contacted by John Doe."

// Example, $e_subject = '$name . ' has contacted you via Your Website.';

$e_subject = ' INSCRIPTION -site Internet ' . $name . '.';


// Configuration option.
// You can change this if you feel that you need to.
// Developers, you may wish to add more fields to the form, in which case you must be sure to add them here.

$e_body = "GROUPE ÉNERGIE QUÉBEC À ÉTÉ CONTACTÉ PAR: $name," . PHP_EOL . PHP_EOL;
$e_content = "\"$comments\"" . PHP_EOL . PHP_EOL;
$e_reply = "$name habite au: $home, $city
Contactez $name à ce numéro:, $phone";



$msg = wordwrap( $e_body . $e_content . $e_reply, 70 );

$headers = "From: $email" . PHP_EOL;
$headers .= "Reply-To: $email" . PHP_EOL;
$headers .= "MIME-Version: 1.0" . PHP_EOL;
$headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL;
$headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;

if(mail($address, $e_subject, $msg, $headers)) {

	// Email has sent successfully, echo a success page.

	echo "<fieldset>";
	echo "<div id='success_page'>";
	echo "<h4 class='highlight'>Merci <strong>$name</strong>, votre inscription nous a bien été transmis.</h4>";
	echo "</div>";
	echo "</fieldset>";

} else {

	echo 'ERROR!';
}

Modifié par studiogats (01 May 2019 - 19:43)
Modérateur
Bonjour,


$headers = "From: $email" . PHP_EOL;
$headers .= "Reply-To: $email" . PHP_EOL;


Le serveur d'envoi d'e-mail doit être autorisé à envoyer l'email, le «FROM» doit être une adresse à toi qui est autorisée (SPF), par exemple:

$headers = "From: noreply@groupeenergiequebec.ca" . PHP_EOL;
$headers .= "Reply-To: $email" . PHP_EOL;


Sinon la validation de l'e-mail c'est du n'importe quoi, voici plus simple et beaucoup plus correct:

function isEmail($email){
  return filter_var($email, FILTER_VALIDATE_EMAIL));
}
Salut Kustolovic!

Merci pour les infos!
Je fais des tests et te redonne des nouvelles.
Merci beaucoup... Smiley cligne
Re salut Kustolovic,

J'ai effectué un test avec ce que tu m'as transmis, pas de résultat!

J'ai inséré
$headers = "From: noreply@groupeenergiequebec.ca" . PHP_EOL;
$headers .= "Reply-To: $email" . PHP_EOL;


juste en dessous de ( <?php ) au tout début.

Ta validation de courriel ne fonctionne pas!
J'ai un message d’erreur sur la ligne
return filter_var($email, FILTER_VALIDATE_EMAIL));


le formulaire n'envoie pas le courriel et reste en mode " envoie en cours..."

Avec ma validation c'est ok, ça fonctionne.
MAIS pas de redirection
Ai-je inséré le code " $headers=... " au bon endroit?

Merci encore pour ton aide!
studiogats a écrit :
Re salut Kustolovic,

J'ai effectué un test avec ce que tu m'as transmis, pas de résultat!

J'ai inséré
$headers = "From: noreply@groupeenergiequebec.ca" . PHP_EOL;
$headers .= "Reply-To: $email" . PHP_EOL;


juste en dessous de ( &lt;?php ) au tout début.

Ta validation de courriel ne fonctionne pas!
J'ai un message d’erreur sur la ligne dans "Dreamweaver" mon éditeur
return filter_var($email, FILTER_VALIDATE_EMAIL));


le formulaire n'envoie pas le courriel et reste en mode " envoie en cours..."

Avec ma validation c'est ok, ça fonctionne.
MAIS pas de redirection
Ai-je inséré le code " $headers=... " au bon endroit?

Merci encore pour ton aide!
studiogats a écrit :

J'ai un message d’erreur sur la ligne
return filter_var($email, FILTER_VALIDATE_EMAIL));



Le message te dis juste que tu as une parenthèse en trop.
Re-salut,
Pour ce qui est de la validation de mail, avec le retrait de la virgule en trop, ça fonctionne bien. Merci!

Toujours pas de redirection de courriel par contre!

ET pour ce qui est des infos à afficher dans le mail reçu...

$e_body = "GROUPE ÉNERGIE QUÉBEC À ÉTÉ CONTACTÉ PAR: $name," . PHP_EOL . PHP_EOL;
$e_content = "\"$comments\"" . PHP_EOL . PHP_EOL;
$e_reply = "$name habite au: $home, $city
Contactez $name à ce numéro: $phone";


Tout ce que je recois c'est:
$e_reply = "$name habite au:
(ces infos s'affichent mais pas le
$home, $city
)
Contactez $name à ce numéro:
(ces infos s'affichent mais pas le
$phone
)

???????
J'apprécie vraiment votre aide!
Modérateur
Bonjour, pour l'adresse, j'ai mis noreply@groupen.... comme exemple,

le seul serveur autorisé a envoyé des mails avec cette adresse, est le serveur à l'adresse 69.28.199.80
Est-ce bien l'adresse de ton serveur web? Sinon il faudrait rajouter l'adresse IP de ton serveur dans le DNS du nom de domaine.
Modérateur
Mais c'est aujourd'hui assez compliqué d'envoyer des mails avec son serveur web si on n'a pas une bonne maîtrise. C'est souvent plus simple de se connecter à son serveur mail et de l'utiliser pour envoyer des e-mails, avec la librairie PHPmailer par exemple ( https://github.com/PHPMailer/PHPMailer )
Meilleure solution