Table des matières

PHP mail

Envoyer des emails avec PHP

aka: sendmail, mail, mail(), php mail, mail php

formulaire pour envoyer un email avec php

<?php
$from=$_POST['Email'];
$message=$_POST['message'];
if($Email&&strlen($Email)>0&&$message&&strlen($message)>0) { //donnees saisies, on envoie le mal
	$from ="mapomm@web.org";
	$text = "coucou!";
	$text .= "\nzdrastvoui!";
	$to="yourpoire@web.org";
	$obj="email test with php";
	$headers ='From: ' .$from ."\n";
	$headers .='Reply-To: ' .$from ."\n";
	$headers.='Bcc: ' .$bcc ."\n";
	$headers .='Content-Type: text/plain; charset="iso-8859-1"'.'\n';
 
		$couriel=mail($to, $obj , $txt, $headers);
 
		if($couriel) {
		#echo "The mail has been sent from $from to $to";
		echo "Merci de votre message nous t&acirc;cherons de vous r&eacute;pondre le plus t&ocirc;t possible";
		} else {
		echo "Il y a eu un probl&egrave;me lors de l'envoi du mail, merci de contacter <a href=\"mailto:" .$to ."?subject=" .$obj ."\">" .$to ."</a>";
		}
	exit;
} else { //rien de saisi, on affiche le formulaire
	?>
		<form  method="post">
		Votre adresse email : <input name="Email" type="text" /><br />
		Votre message : <textarea name="message" cols="50" rows="10"></textarea><br />
		<input type="reset" name="Annuler" /><br />
		<input type="submit" name="Envoyer" />
		</form>
	<?
} //fin affichage formulaire
?>

envoyer un email au format HTML

source: http://www.asp-php.net/ressources/bouts_de_code.aspx?id=35

<?php
 
$Destinataire = "nom@domaine.com";
$Sujet = "Sujet de votre mail";
 
$From  = "From:nom@domaine.com\n";
$From .= "MIME-version: 1.0\n";
$From .= "Content-type: text/html; charset= iso-8859-1\n";
 
$Message = "<b>Texte en Gras</b><u>Texte Souligné</u><i>Texte en Italique</i>";
 
mail($Destinataire,$Sujet,$Message,$From);
 
?>

Envoyer un mail avec la commande mailto:

Astuce: le retour chariot (saut de ligne, <br>, \n, \r) doit s'écrire

 %0D%0A
 
$body="
Bonjour,%0D%0A%0D%0A
Une mise à jour de sécurité " .$letype ." est disponible, merci de faire la mise à jour de votre/vos site/s " .$letype .".%0D%0A%0D%0A
" .$url;
?>
</table>
<a href="mailto:?subject=mise à jour / patch / upgrade <?php echo $letype;?>&bcc=<?php echo $ecrireatous; ?>&body=<?php echo $body;?>">Ecrire à tous</a>
</div>

vérifier la validité de la syntaxe d'un email

avec un shell script (mode CGI)

placer auparavant dans un fichier email.txt vos emails, eg:

toto@truch.ch
t'ata@truch-ch
N'GaoundéréC'èJoli @blu
! /usr/bin/php
<?php
 
function EmailOK($email) {
 
  return( ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.
               '@'.
               '[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.
               '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',
               $email) );
}
 
$file2open="email.txt";
$handle = @fopen("$file2open", "r"); //tests
if ($handle) { //si le fichier est ouvert
$laligne=0;
   while (!feof($handle)) { //begin main loop
        $buffer = fgets($handle, 4096);
$buffer=trim($buffer);
$letest=EmailOK($buffer);
if($letest=='') {
echo "$buffer n'est pas valide"."\n";
}
 } //end main loop
   fclose($handle);
}
?>

vous renverra des erreurs sur tous les emails, sauf toto@truch.ch (qui n'existe peut-être pas, mais qui est valide)

FILTER_VALIDATE_EMAIL

$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
  $emailErr = "Invalid email format";
}

sur un serveur web via un formulaire OLD

check-email.php

<?
function EmailOK($email) {
  
  return( ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.
               '@'.
               '[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.
               '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',
               $email) );
}

if(isset($email)) {
$letest=EmailOK($email);
if($letest=='') {
echo "PROBL&Egrave;ME: le mail ";
echo "<h1>$email</h1> n'est pas valide<br><a href=javascript:history.go(-1)>Retour</a>"."<BR>\n";
exit;
} else {
echo "OK: le mail ";
echo "<h1>$email</h1> est valide<br><a href=javascript:history.go(-1)>Retour</a>"."<BR>\n";
exit;
}
}
?>
    <form>
    <input type='hidden' name='today' value='$today'><br>
    Veuillez introduire votre email: <input type='text' name=email>
    <input type='submit' value='Soumettre'>
    </form>