PHP : Mail

Vérifier si la fonction Sendmail est activée sur le serveur.

<?php
 phpinfo();
 ?>

a. Créer un répertoire FTP « _PHPmail »
b. Créer « index.php »
c. Afficher
d. Chercher la ligne contenant « sendmail »

Alternative

<?php
if ( function_exists( 'mail' ) )
{
    echo 'mail() is available';
}
else
{
    echo 'mail() has been disabled';
}
?> 

Réponse:

Fonction de suivi d’email sur OVH:

Ici on va trouver tous les mails qui n’arrivent pas sur le serveur

Envoyer un email simple sans formulaire :

<?php 

$email = "benjaminviguier.pro@gmail.com";
$subject =  "Email Test";
$message = "this is a mail testing email function on server";


$sendMail = mail($email, $subject, $message);
if($sendMail)
{
echo "Email Sent Successfully";
}
else

{
echo "Mail Failed";
}
?> 
Mail arrivé !

(Attention : Le mail peut partir, mais être bloqué par le prestataire mail d’arrivée, gmail, outlook, free, orange, yahoo… D’où l’interêt de se créer des adresses ‘tests’ chez tous ces prestataires)

Envoi propre – ajout d’un header:

<?php 
$emetteur = "benjaminviguier.bv@gmail.com";
$headers = 'From: ' . $emetteur;
$email = "benjaminviguier.pro@gmail.com";
$subject =  "Email Test";
$message = "this is a mail testing email function on server";


$sendMail = mail($email, $subject, $message, $headers);
if($sendMail)
{
echo "Email Sent Successfully";
}
else

{
echo "Mail Failed";
}
?> 

Envoyer un Email via formulaire :

SOURCE

  • Créer le formulaire: (method post permet d’envoyer les infos dans la page sendmail.php – ici sendmail.php est dans le même dossier que le php de formulaire de contact… )
<html>
<head>
<title>Simple Feedback Form</title>
<style>label{display:block;}</style>
</head>
<body>

<form action="sendmail.php" method="post">

<label>Email Address</label>
<input type="text" name="email_address" size="40">

<label>Votre message</label>
<textarea name="message" cols="50" rows="10"></textarea>

<input type="submit" name="send" value="Submit">

</form>

</body>
</html>
  • Créer le script qui reçoit les données
    Ouvrir une page sendmail.php
<?php
$mymail = "benjaminviguier.pro@gmail.com";

$subject = 'Test formulaire';

//Récupération des variables envoyées depuis la methode POST
$email_address = $_POST['email_address'];
$message = $_POST['message'];
$headers = 'From: ' . $email_address;

$sendMail = mail($mymail, $subject, $message, $headers);
if($sendMail)
{

echo "Email Sent Successfully to ", $email_address;
echo "<br>";
echo "The message is : ",$message;

$headers = 'From: ' . $mymail;
// Message retour optionnel
$sendMail2 = mail($email_address, "Sujet : Merci", "Message : merci pour votre message", $headers);
}
else

{
echo "Mail Failed. We can't send mail to ", $email_adress;
}
?> 

Filtres:

permet d’enlever des caractères qui permettraient d’instiller du code via le formulaire: par ex : < > & …

function filter_email_header($form_field) {  
return preg_replace('/[nr|!/<>^$%*&]+/','',$form_field);
}