sorry for my english, i'm french.
I'm newbie in php and i got probleme with an email script with image (Attachement).
People who use my form have error message
mail can't be send!
What s the probleme with my script?
Script with translation:
- Code: Select all
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>site</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
.success {
border: 2px solid green;
text-align: center;
}
.error{
border: 2px solid red;
text-align: center;
}
</style>
</head>
<body>
<?php
// connexion Mysql
mysql_connect("localhost", "admin", "password");
mysql_select_db("data base");
if (!empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['date']) &&
!empty($_POST['hour']) && !empty($_POST['title']) && !empty($_POST['contents']) && !empty($_POST['place']))
{
include "libmail.php";
$name=$_POST['name'];
$email=$_POST['email'];
$date=$_POST['date'];
$hour=$_POST['hour'];
$title=$_POST['title'];
$contents=$_POST['contents'];
$place=$_POST['place'];
if (isset($_POST['link']))
$link=$_POST['link'];
else $link = '';
$m= new Mail;
$m->From( $_POST['email'] );
$m->To( "mymail@mail.fr" );
$m->Subject( "announcement ".$_POST['title'] );
$message= " Name : ".stripslashes($name)."\n Email : ".$email."\n Date : ".$date."\n Hour : ".$hour."\n Titre :".stripslashes($titre)."\n Place : ".stripslashes($place)."\n Link : ".$link."\n Message : ".stripslashes($contents)."\n";
$m->Body( $message);
$m->Priority(2) ;
if (isset($_FILES['image'])){
if ($_FILES['image']['error'] == 0 && file_exists($_FILES['image']['tmp_name'])) {
$m->Attach( $_FILES['image']['tmp_name'], $_FILES['image']['name'] ) ;
}
else {
switch ($_FILES['image']['error']) {
case UPLOAD_ERR_OK :
$erreur = 'No error;
break;
case UPLOAD_ERR_INI_SIZE :
$erreur = 'Your file `'.$_FILES['image']['name'].'` is oversize allowed by PHP( '.get_cfg_var('upload_max_filesize').' )';
break;
case UPLOAD_ERR_FORM_SIZE :
$erreur = 'Your file is oversize';
break;
case UPLOAD_ERR_PARTIAL :
$erreur = 'Le fichier n\'a été que partiellement téléchargé. !!!';
break;
case UPLOAD_ERR_NO_FILE :
$erreur = 'Aucun fichier téléchargé !!!';
break;
case UPLOAD_ERR_NO_TMP_DIR :
$erreur = 'Un dossier temporaire est manquant.';
break;
case UPLOAD_ERR_CANT_WRITE :
$erreur = 'Échec de l\'écriture du fichier sur le disque.';
break;
case UPLOAD_ERR_EXTENSION :
$erreur = 'Une extension PHP a arrété l\'envoi de fichier. PHP ne propose aucun moyen de déterminer quelle extension est en cause. L\'examen du phpinfo() peut aider.';
break;
default :
$erreur = 'L\'upload a rencontré une erreur inconnue !!!';
break;
}
echo '<p class="error">'.$erreur.'</p>';
}
}
if ($m->Send()){
echo '<p class="success">Your message is send.</p>';
}
else {
echo '<p class="erreur">mail can't be send!</p>';
}
}
if ((isset($_POST['submit']))&&($_POST['submit'] == "Announcement"))
{
?>
<div id="corpsform">
<form vname="FormName" action="" method="post" enctype="multipart/form-data" name="form">
<table align=center height=400>
<tr><td align=right>Name :</td><td align=left><input type="text" size="30" name="name" value=""/></td></tr>
<tr><td align=right>Email : </td><td align=left><input type="text" size="30" name="email" value=""/></td></tr>
<tr><td align=right>Date : </td><td align=left><input type="text" size="30" name="date" value=""/></td></tr>
<tr><td align=right>Hour : </td><td align=left><input type="text" size="30" name="hour" value=""/></td></tr>
<tr><td align=right>Title : </td><td align=left><input type="text" size="30" name="title" value=""/></td></tr>
<tr><td align=right>Image (Max:2Mo) : </td><td align=left><input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<input name="image" type="file" size="30"></td></tr>
<tr><td align=right>Contents :</td><td align=left><textarea rows="5" name="contents" cols="30"></textarea></td></tr>
<tr><td align=right>Place : </td><td align=left><input type="text" size="30" name="place" value=""/></td></tr>
<tr><td align=right>Link : <td align=left><input type="text" size="30" name="link" value=""/></td></tr>
<tr><td colspan=2 align=center><input type="submit" name="submit" value="Send" /></td></tr>
</table>
</form>
</div>
<?php
}
mysql_close();
?>
</body>
</html>
original script:
- Code: Select all
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>mon site</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript">
function bookmarksite(title, url, t){
if (document.all) {
window.external.AddFavorite(url, title);
t.style.behavior='url(#default#homepage)';
t.setHomePage('http://www.monsite.com/annonce.php');
} else if (window.sidebar) {
window.sidebar.addPanel(title, url, "");
}
}
</script>
<style type="text/css">
.success {
border: 2px solid green;
text-align: center;
}
.error{
border: 2px solid red;
text-align: center;
}
</style>
</head>
<body>
<?php
// connexion Mysql
mysql_connect("localhost", "admin", "password");
mysql_select_db("base de donnee");
if (!empty($_POST['nom']) && !empty($_POST['email']) && !empty($_POST['date']) &&
!empty($_POST['heure']) && !empty($_POST['titre']) && !empty($_POST['contenu']) && !empty($_POST['lieu']))
{
include "libmail.php";
$nom=$_POST['nom'];
$email=$_POST['email'];
$date=$_POST['date'];
$heure=$_POST['heure'];
$titre=$_POST['titre'];
$contenu=$_POST['contenu'];
$lieu=$_POST['lieu'];
if (isset($_POST['lien']))
$lien=$_POST['lien'];
else $lien = '';
// on prépare le message
$m= new Mail; // le mail est créé
$m->From( $_POST['email'] );
$m->To( "monmail@mail.fr" );
$m->Subject( "annonce ".$_POST['titre'] );
$message= " Nom : ".stripslashes($nom)."\n Email : ".$email."\n Date : ".$date."\n Heure : ".$heure."\n Titre :".stripslashes($titre)."\n Lieu : ".stripslashes($lieu)."\n Lien : ".$lien."\n Message : ".stripslashes($contenu)."\n";
$m->Body( $message); // corps du message
// donne la priorité du message
$m->Priority(2) ;
// validation de l'upload
if (isset($_FILES['image'])){
// la on peu valider l'image
if ($_FILES['image']['error'] == 0 && file_exists($_FILES['image']['tmp_name'])) {
// le fichier est arrivé nikel on peu le traiter
$m->Attach( $_FILES['image']['tmp_name'], $_FILES['image']['name'] ) ; // attache l image
}
else {
// la y a une erreur et faut la traiter comme il faut
switch ($_FILES['image']['error']) {
case UPLOAD_ERR_OK :
$erreur = 'Pas d\'erreur';
break;
case UPLOAD_ERR_INI_SIZE :
$erreur = 'Votre fichier `'.$_FILES['image']['name'].'` dépasse la taille maximale d\'upload autorisée par PHP( '.get_cfg_var('upload_max_filesize').' )';
break;
case UPLOAD_ERR_FORM_SIZE :
$erreur = 'Votre fichier dépasse la taille maximale demandée par le Webmestre';
break;
case UPLOAD_ERR_PARTIAL :
$erreur = 'Le fichier n\'a été que partiellement téléchargé. !!!';
break;
case UPLOAD_ERR_NO_FILE :
$erreur = 'Aucun fichier téléchargé !!!';
break;
case UPLOAD_ERR_NO_TMP_DIR :
$erreur = 'Un dossier temporaire est manquant.';
break;
case UPLOAD_ERR_CANT_WRITE :
$erreur = 'Échec de l\'écriture du fichier sur le disque.';
break;
case UPLOAD_ERR_EXTENSION :
$erreur = 'Une extension PHP a arrété l\'envoi de fichier. PHP ne propose aucun moyen de déterminer quelle extension est en cause. L\'examen du phpinfo() peut aider.';
break;
default :
$erreur = 'L\'upload a rencontré une erreur inconnue !!!';
break;
}
echo '<p class="error">'.$erreur.'</p>';
}
}
//fin validation upload
if ($m->Send()){ // envoi le mail
echo '<p class="success">Votre annonce a été envoyé.</p>';
}
else {
// voir si la classe fournit des messages d'erreur ! (a inclure dans le message ci dessous
echo '<p class="erreur">Le mail n\'a pas pus être envoyé !</p>';
}
}
if ((isset($_POST['submit']))&&($_POST['submit'] == "passerannonce"))
{
// formulaire
?>
<div id="corpsform">
<form vname="FormName" action="" method="post" enctype="multipart/form-data" name="form">
<table align=center height=400>
<tr><td align=right>Nom :</td><td align=left><input type="text" size="30" name="nom" value=""/></td></tr>
<tr><td align=right>Email : </td><td align=left><input type="text" size="30" name="email" value=""/></td></tr>
<tr><td align=right>Date : </td><td align=left><input type="text" size="30" name="date" value=""/></td></tr>
<tr><td align=right>Heure : </td><td align=left><input type="text" size="30" name="heure" value=""/></td></tr>
<tr><td align=right>Titre : </td><td align=left><input type="text" size="30" name="titre" value=""/></td></tr>
<tr><td align=right>Image (Max:2Mo) : </td><td align=left><input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<input name="image" type="file" size="30"></td></tr>
<tr><td align=right>Contenu :</td><td align=left><textarea rows="5" name="contenu" cols="30"></textarea></td></tr>
<tr><td align=right>Lieu : </td><td align=left><input type="text" size="30" name="lieu" value=""/></td></tr>
<tr><td align=right>Lien : <td align=left><input type="text" size="30" name="lien" value=""/></td></tr>
<tr><td colspan=2 align=center><input type="submit" name="submit" value="Envoyer" /></td></tr>
</table>
</form>
</div>
<?php
}
mysql_close();
?>
</body>
</html>


