Envoi automatique de mail avec Ajax au chargement de page

Signaler
-
Messages postés
32152
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 avril 2021
-
Bonjour,
J'ai cherché sans trouver satisfaction. Voici mon problème: je veux qu'au chargement de ma page, qu'un message soit envoyé à une adresse mail. Voici ce que cela peut ressembler :

<script src="jquery.js"></script>
<form method="GET" action="">
<textarea name="contenu_message" action=""></textarea>
<input type="submit" value="Envoyer" name="bouton" />
</form>
<script>
$("html").load(function(){

$.ajax({
url : '***@***', // L'adresse mail qui reçoit le message
type : 'GET'
data : 'contenu=' + contenu_message; //Contenu du message
});

});
</script>


Merci de m'aider à résoudre ce problème.
A voir également:

2 réponses

Messages postés
32152
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 avril 2021
345
Bonjour,

Déjà.. je te conseille d'utiliser le POST au lieu du GET.
Ensuite, il faut récupérer le contenu de tes variables pour les injecter dans ton script...

var contenu_message = $("#contenu_message").val();


Et enfin.. tu ne peux pas utiliser un EMAIL dans l'url de l'ajax.
Il faut que ça soit un script PHP ... qui lui se chargera de l'envoi...

Voici des exemples d'ajax :
http://codes-sources.commentcamarche.net/source/102253-exemple-ajax-en-jquery
Merci Jordane45,
Mais, étant donné que je veux envoyer un message par mail au chargement de ma page, comment faire cela sans cliquer sur un bouton SUBMIT ? L'objectif c'est qu'une fois la page est chargée, un mail est automatiquement envoyé à l'adresse mail indiquée.
Aidez moi
Messages postés
32152
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 avril 2021
345
Tu lances ton script js dans un
$(document).ready(...
Messages postés
43
Date d'inscription
mercredi 8 novembre 2006
Statut
Membre
Dernière intervention
29 décembre 2020
2
La solution de Jordane45 est la bonne, il faut passer par la fonction mailto de PHP (IE utiliser un langage "serveur") pour envoyer un email.

Si tu souhaite envoyer un email au chargement de la page sans appuyer sur le bouton SUBMIT, à quel moment compte tu récupérer le contenu du message ?

Pour faire ce que tu souhaite faire il ne te reste qu'une seule solution :
$.sendMail=function(o){
var _mail= o.mail //< ici l'adresse email
var _url= o.url // < page PHP prévue pour l'envoi du mail
var contenu_message = $("#contenu_message").val(); // mais tu peux mettre var content_message=o.content
$.ajax({
url:_url+"?mail="+_mail,
type:'POST',
data:'content='+contenu_message,
success:function(d){
//ICI LE CODE SI ENVOI
}
});
}

$(function(){
$.sendMail({mail:****@****.fr,url:"sendmail.php",content:$("#contenu_message").val()});
});
Messages postés
32152
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 avril 2021
345 >
Messages postés
43
Date d'inscription
mercredi 8 novembre 2006
Statut
Membre
Dernière intervention
29 décembre 2020

Petite précision:
Lorsque l'ont utilise la méthode POST il est préférable de passer les variables en tant qu'objet au lieu de les mettre dans l'url comme tu le fais :
$.ajax({ 
        type: "POST",
        url: _url,
        data: {mail:_mail,content:contenu_message},
        async: true,
        dataType: "json"
})
  .done(function(reponse){
     //ICI LE CODE SI ENVOI

 })
.fail(function(jqXHR, textStatus){
     console.log ('ERREUR : ' + textStatus);
 });


De plus maintenant on utilise plutôt le .done au lieu du .success


Voici ce qui est indiqué dans la documentation officielle :
Deprecation Notice: The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks are removed as of jQuery 3.0. You can use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead


Tu trouveras un exemple complet ici : http://codes-sources.commentcamarche.net/source/view/102253/1479662

Et la documentation officielle de l'ajax en jquery :
http://api.jquery.com/jquery.ajax/
.

.