Bonjour à tous,
Je vais poser une question un peu bête mais je la pose quand même..
J'ai un site web statique avec un formulaire de contact en html qui lance un fichier php lors de l'envoi de ce dernier.
Mon nom de domaine étant chez gandi, j'ai cru bon de creer une boite mail roundcube chez eux avec mon nom de domaine rattaché..
Le problème est que quand je soumets le formulaire du site aucun mail ne part et arrive chez gandi...
Or la boite mail roundcube chez gandi fonctionne parfaitement si par exemple j'envoi un mail depuis gmail par exemple..
J'ai cherché pendant plusieurs jours une solution entre les serveurs dns, reprendre le fichier php mais rien n'y fait..
Le site étant hébergé sur mon kimsufi y a t il quelque chose à configurer dessus, une passerelle vers l'adresse mail finale ?
J'arrive pas a faire le lien entre mon adresse de contact qui est dans la variable $to de mon appli (mon adresse mail de contact étant codé en dur dans le fichier php) et tout le cheminement jusqu'a la reception du mail chez gandi : je vois pas ce que cloche !!
J'ai suivi le tuto graphikart sur un formulaire de contact avancé EN php et ca coince chez moi (pour info, j'ai juste le formulaire qui est une page html et qui appel un fichier php alors que dans la formation le fichier est un contact.php)
Merci pour votre aide smile
Ma question vas peut etre semblé bête mais as tu un relais smtp sur le serveur hebergent ton script php ?
en error_reporting(E_ALL); que tu dit le retour de ta function mail() ? ($envoie = mail(????); var_dump($envoie); )
@Joffrey Tournier, non je n'ai pas de relais smtp ou mon site est hébergé et je ne pensais pas qu'il en fallait un...
@shinix, je poste mon code il ya contact.html et form2mail.php, j'ai adapté le tuto graphikart à mon fichier php
<form class="form-horizontal" name="FXThNF1oz" id="FXThNF1oz" onsubmit="return validateForm_XThNF1oz( this );" method="POST" action="_iserv/form2mail/form2mail.php" target="_top" enctype="multipart/form-data">
<div class="control-group">
<label class="control-label" for="prenom">Prénom
</label>
<div class="controls">
<input type="text" name="prenom" id="prenom" value="" maxlength="50" class="input-medium">
<span class="error message"></span>
</div>
</div>
<div class="control-group">
<label class="control-label required" for="votreemail">Votre email
</label>
<div class="controls">
<input type="email" name="votreemail" id="votreemail" value="" class="input-medium" required pattern="^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$" title="Champ Votre email doit contenir une adresse email valide !">
<span class="error message"></span>
</div>
</div>
<div class="control-group">
<label class="control-label required" for="votremessage">Votre message
</label>
<div class="controls">
<textarea name="votremessage" id="votremessage" value="" rows="10" style="width:400px;" required></textarea>
<span class="error message"></span>
</div>
</div>
<div class="form-actions" style="background-color:transparent;padding-left:0;margin-left:0;padding-bottom:0">
<button type="submit" class="btn btn-primary" >Envoyer
</button>
</div>
</form>
<?php
@require_once("../common/mails.php");
@require_once("../common/ipenv.php");
$F2M_RECEIPT = false;
$TO = "riri@monnomdedomaine.fr";
$URL = "";
$SUBJECT = "";
$LANG = "en";
$SITELANG = "en";
$REPLY_TO = "";
$message = "";
$intro = "";
$upload_dir = "data/";
$AUTHORIZED_EXT = "";
$UPLOADMODE = 1;
$MAXFILESIZE = 0;
while( list($key, $val) = each($_POST) ) {
if( $key == "f2memail" ) {
$TO = _local_replace_bad( $val );
} else if( $key == "f2memail_exp" ) {
$REPLY_TO = _local_replace_bad( $val );
} else if( $key == "f2msubj" ) {
$SUBJECT = _local_replace_bad( $val );
} else if( $key == "f2murl" ) {
$URL = _local_replace_bad( $val );
} else if( $key == "f2mlang" ) {
$LANG = strtolower( _local_replace_bad( $val ) );
} else if( $key == "f2msitelang" ) {
$SITELANG = strtolower( _local_replace_bad( $val ) );
} else if( $key == "f2muploadmode" ) {
$UPLOADMODE = strtolower( _local_replace_bad( $val ) );
} else if( $key == "f2mauthext" ) {
$AUTHORIZED_EXT = strtolower( _local_replace_bad( $val ) );
} else if( $key == "MAX_FILE_SIZE" ) {
$MAXFILESIZE = _local_replace_bad( $val );
$MAXFILESIZE /= 1024;
} else if( substr($key,0,5) != "f2mcf" ) {
$message .= "$key = " . _local_replace_bad( $val ) . "\n";
}
}
$HREF = getenv("HTTP_REFERER");
$HREF = substr( $HREF, 0, strrpos( $HREF, '/' ) + 1 );
if( $LANG == "en" ) {
$intro .= "This email comes from the website $HREF";
if( $SITELANG != "" && $LANG != $SITELANG )
$intro .= " (language=$SITELANG)";
} else {
$intro .= "Cet email provient du site internet $HREF";
if( $SITELANG != "" && $LANG != $SITELANG )
$intro .= " (langue=$SITELANG)";
}
$ipsender = PMA_getIp();
if( $ipsender != "" ) {
if( $LANG == "en" ) {
$intro .= " and was send by the IP address : $ipsender";
} else
$intro .= " et a été envoyé par l'adresse IP : $ipsender";
}
$error_code = "";
if( $TO != "" && $SUBJECT != "" ) {
if( $REPLY_TO != "" )
$headers = "Content-type: text/plain; charset=utf-8\nFrom: $REPLY_TO\nReturn-Path: $TO\n";
else
$headers = "Content-type: text/plain; charset=utf-8\nFrom: $TO\nReturn-Path: $TO\n";
if( $F2M_RECEIPT ) {
$headers .= "Disposition-Notification-To: $TO\n";
}
$upload_file = ( $_FILES['FilenameUpload']['name'] != "" );
if( ! $upload_file ) {
mail($TO, '=?UTF-8?B?'.base64_encode($SUBJECT).'?=', $intro."\n\n".$message, $headers );
} else {
$FilenameUpload_name = $_FILES['FilenameUpload']['name'];
$FilenameUpload_name = str_replace( " ", "_", $FilenameUpload_name );
$FilenameUpload_name = str_replace( "'", "_", $FilenameUpload_name );
$FilenameUpload_name = str_replace( '"', '_', $FilenameUpload_name );
$FilenameUpload_name = str_replace( '&', '_', $FilenameUpload_name );
$FilenameUpload_name = str_replace( '..', '.', $FilenameUpload_name );
preg_replace("/[^0-9^a-z^_^.^-]/", "", $FilenameUpload_name);
if( $LANG == "fr" ) {
$message .= "\nFichier joint = ";
} else
$message .= "\nAttached file = ";
if( $UPLOADMODE == 0 ) {
$HREF = substr( $HREF, 0, strrpos( $HREF, '/' ) - 1 );
$HREF = substr( $HREF, 0, strrpos( $HREF, '/' ) + 1 );
$message .= $HREF . "_iserv/form2mail/data/" . $FilenameUpload_name;
} else
$message .= $_FILES['FilenameUpload']['name'];
$m = new Mail;
$m->From( $TO );
$m->To( $TO );
$m->Subject( $SUBJECT );
$m->Body( $intro."\n\n".$message );
$m->setReceipt( $F2M_RECEIPT );
$delete_upload = false;
if( $_FILES['FilenameUpload']['error'] == UPLOAD_ERR_OK ) {
if( $AUTHORIZED_EXT != "" && $FilenameUpload_name != "" && strpos( $AUTHORIZED_EXT, GetExtensionName( "$FilenameUpload_name", true ) ) === false ) {
$error_code = -2;
} else {
if( !move_uploaded_file( $_FILES['FilenameUpload']['tmp_name'], "$upload_dir" . "$FilenameUpload_name" ) ) {
if( !copy( $_FILES['FilenameUpload']['tmp_name'], "$upload_dir" . "$FilenameUpload_name" ) ) {
$error_code = 9;
}
}
}
} else {
$error_code = $_FILES['FilenameUpload']['error'];
}
if( $error_code == "" && $UPLOADMODE > 0 ) {
$m->Attach( $upload_dir. "$FilenameUpload_name", mime_content_type( "$FilenameUpload_name" ) );
$delete_upload = true;
}
if( $error_code == "" && $m->ErrMsg() != "" ) {
$error_code = $m->ErrMsg();
}
if( $error_code == "" ) {
if( $UPLOADMODE == 0 ) {
mail($TO, '=?UTF-8?B?'.base64_encode($SUBJECT).'?=', $intro."\n\n".$message, $headers );
} else if( !$m->Send() ) {
if( "$FilenameUpload_name" != "" ) {
if( $LANG == "fr" ) {
$message .= "\n\nATTENTION: Le fichier joint n'a pas pu être envoyé par email mais il a été enregistré sur votre espace web.";
} else {
$message .= "\n\nWARNING: The attached file could not be sent by email but is saved on your web space.";
}
if( !mail($TO, '=?UTF-8?B?'.base64_encode($SUBJECT).'?=', $intro."\n\n".$message, $headers ) ) {
$error_code = "-1";
} else
$delete_upload = false;
}
else {
$error_code = "-1";
}
}
}
if( $delete_upload ) {
Unlink( $upload_dir . $FilenameUpload_name );
}
}
}
if( $error_code != "" ) {
if( $error_code == "-1" ) {
$error_code = "Mail server error.";
} else if( $error_code == "-2" ) {
$AUTHORIZED_EXT = str_replace( "|", ",", $AUTHORIZED_EXT );
$AUTHORIZED_EXT = strtoupper( str_replace( ".", " ", $AUTHORIZED_EXT ) );
if( $LANG == "fr" ) {
$error_code = "Type de fichier non accepté. Votre fichier doit être au format:" . $AUTHORIZED_EXT . ".";
} else
$error_code = "Type of file not accepted. File format must be:" . $AUTHORIZED_EXT . ".";
} else if( $error_code == "1" || $error_code == "2" ) {
if( $LANG == "fr" ) {
$error_code = "Votre fichier est trop gros. La taille maximale autorisée est " . $MAXFILESIZE. " Ko.";
} else
$error_code = "File is too big. Maximum size is " . $MAXFILESIZE . " KB.";
} else if( $error_code == "3" || $error_code == "9" ) {
$error_code = "Upload of the attached file failed (error ".$error_code.").";
} else if( $error_code == "4" ) {
$error_code = "Attached file is empty.";
} else
$error_code = "ERROR ".$error_code . ": ";
echo "<script language=\"javascript\" charset=\"utf-8\">window.location='javascript:history.back()';alert('$error_code');</script>";
} else if( $URL != "" ) {
redir("$URL");
} else {
$URL = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$URL = explode( '/_iserv', $URL );
redir("$URL");
}
?>
Merci pour votre aide.
Si le serveur n'as pas de smtp alors impossible pour php d'envoiller un mail (a part peut être en passant par proxy) ...
http://php.net/manual/fr/function.mail.php
"Cette fonction ouvre et ferme un socket SMTP pour chaque mail, ce qui n'est pas très efficace."
@Joffrey Tournier, merci pour ta réponse quel relais smtp faut il que je configure?
y a t il des tutos pour installer ca sur une debian?
J'ai rien vu sur graphik art en tuto...
tu en as plusieur de possible ... moi perso j'utilise postfix d'autres te dirons qu'il faut savoir le config pour pas l'ouvrire a tout le monde ....
Sur un enviro de dev aptitude install postfix suffira sur un enviro de prod faut configurer pour pas ouvrire le port 25 a tout le monde