Envoi automatique de mail avec Ajax au chargement de page

Kelsilver - 26 janv. 2018 à 11:06
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 13 févr. 2018 à 23:30
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.

2 réponses

jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
26 janv. 2018 à 11:27
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
0
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
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
26 janv. 2018 à 18:24
Tu lances ton script js dans un
$(document).ready(...
0
Profil bloqué
13 févr. 2018 à 22:31
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()});
});
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344 > Profil bloqué
13 févr. 2018 à 23:30
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/
.

.
0
Rejoignez-nous