Je souhaite que mon site Web puisse envoyer un e-mail sans actualiser la page. Je veux donc utiliser Javascript.
<form action="javascript:sendMail();" name="pmForm" id="pmForm" method="post">
Enter Friend's Email:
<input name="pmSubject" id="pmSubject" type="text" maxlength="64" style="width:98%;" />
<input name="pmSubmit" type="submit" value="Invite" />
Voici comment je veux appeler la fonction, mais je ne sais pas quoi mettre dans la fonction javascript. D'après les recherches que j'ai faites, j'ai trouvé un exemple qui utilise la méthode mailto, mais d'après ce que je comprends, il n'est pas envoyé directement depuis le site.
Ma question est donc de savoir où trouver ce qu'il faut mettre dans la fonction JavaScript pour envoyer un e-mail directement depuis le site Web.
function sendMail() {
/* ...code here... */
}
javascript
email
user906357
la source
la source
Réponses:
Vous ne pouvez pas envoyer un e-mail directement avec javascript.
Vous pouvez cependant ouvrir le client de messagerie de l'utilisateur:
Il y a aussi quelques paramètres pour pré-remplir le sujet et le corps:
Une autre solution serait de faire un appel ajax à votre serveur, afin que le serveur envoie l'e-mail. Veillez à ne permettre à personne d'envoyer des e-mails via votre serveur.
la source
window.location.href
(comme dans cette réponse: stackoverflow.com/questions/271171/… ) pour ouvrir le client de messagerie et il ne laisse pas cette fenêtre vide lorsque l'utilisateur a fini avec l'e-mail.subject
et lesbody
variables ou sont - ils le texte actuel qui sera dans les champs?window.open( String( 'mailto:recipient^example.com' ).replace('^', '@') );
pour confondre les robots collecteurs de mailsIndirect via votre serveur - Appel à une API tierce - sécurisé et recommandé
Votre serveur peut appeler l'API tierce après une authentification et une autorisation appropriées. Les clés API ne sont pas exposées au client.
node.js - https://www.npmjs.org/package/node-mandrill
puis utilisez $ .ajax sur le client pour appeler votre API de messagerie.
Directement à partir du client - appelant une API tierce - non recommandé
Envoyer un e-mail en utilisant uniquement JavaScript
Comme ça -
https://medium.com/design-startups/b53319616782
Remarque: Gardez à l'esprit que votre clé API est visible par n'importe qui, donc tout utilisateur malveillant peut utiliser votre clé pour envoyer des e-mails qui peuvent consommer votre quota.
la source
Je n'ai pas pu trouver de réponse qui satisfasse vraiment la question d'origine.
J'ai mis en place un service gratuit simple qui vous permet de faire une demande HTTP POST standard pour envoyer un e-mail. Cela s'appelle PostMail , et vous pouvez simplement poster un formulaire, utiliser Javascript ou jQuery. Lorsque vous vous inscrivez, il vous fournit un code que vous pouvez copier et coller dans votre site Web. Voici quelques exemples:
Javascript:
jQuery:
Encore une fois, en toute divulgation, j'ai créé ce service parce que je n'ai pas pu trouver de réponse appropriée.
la source
Vous pouvez trouver ce qu'il faut mettre dans la fonction JavaScript dans ce post.
Fournissez votre propre script PHP (ou n'importe quel langage) pour envoyer l'e-mail.
la source
Je vous annonce la nouvelle. Vous NE POUVEZ PAS envoyer un e-mail avec JavaScript en soi.Sur la base du contexte de la question du PO, ma réponse ci-dessus ne se vérifie plus, comme l'a souligné @KennyEvitt dans les commentaires. Il semble que vous puissiez utiliser JavaScript comme client SMTP .
Cependant , je n'ai pas creusé plus profondément pour savoir s'il est suffisamment sécurisé et compatible avec plusieurs navigateurs. Je ne peux donc ni vous encourager ni vous décourager à l'utiliser. À utiliser à vos risques et périls.
la source
Je sais que je suis trop tard pour écrire une réponse à cette question, mais je pense néanmoins que cela sera utile à toute personne qui envisage d'envoyer des e-mails via javascript.
La première façon que je suggérerais est d'utiliser un rappel pour le faire sur le serveur. Si vous voulez vraiment qu'il soit géré en utilisant le suivi javascript, c'est ce que je recommande.
Le moyen le plus simple que j'ai trouvé était d'utiliser smtpJs. Une bibliothèque gratuite qui peut être utilisée pour envoyer des e-mails.
1.Incluez le script comme ci-dessous
2. Vous pouvez envoyer un e-mail comme celui-ci
Ce qui n'est pas conseillé car il affichera votre mot de passe du côté client.Vous pouvez donc effectuer les opérations suivantes pour crypter vos informations d'identification SMTP, les verrouiller sur un seul domaine et transmettre un jeton sécurisé à la place des informations d'identification.
Enfin, si vous n'avez pas de serveur SMTP, vous utilisez un service de relais smtp tel que Elastic Email
Voici également le lien vers le site officiel de SmtpJS.com où vous pouvez trouver tous les exemples dont vous avez besoin et l'endroit où vous pouvez créer votre jeton sécurisé.
J'espère que quelqu'un trouvera ces détails utiles. Codage heureux.
la source
Il semble y avoir une nouvelle solution à l'horizon. Cela s'appelle EmailJS . Ils affirment qu'aucun code serveur n'est nécessaire. Vous pouvez demander une invitation.
Mise à jour d'août 2016: EmailJS semble déjà être en ligne. Vous pouvez envoyer jusqu'à 200 e-mails par mois gratuitement et il propose des abonnements pour des volumes plus élevés.
la source
window.open ('mailto: [email protected]'); comme ci-dessus ne fait rien pour cacher que l'adresse e-mail "[email protected]" ne soit pas récupérée par les spambots. J'avais l'habitude de constamment rencontrer ce problème.
la source
Javascript est côté client, vous ne pouvez pas envoyer de courrier électronique avec Javascript. Le navigateur reconnaît peut-être seulement
mailto:
et démarre votre client de messagerie par défaut.la source
Dans votre
sendMail()
fonction, ajoutez un appel ajax à votre backend, où vous pouvez l'implémenter côté serveur.la source
la source
JavaScript ne peut pas envoyer de courrier électronique à partir d'un navigateur Web. Cependant, en prenant du recul par rapport à la solution que vous avez déjà essayé de mettre en œuvre, vous pouvez faire quelque chose qui répond à l'exigence d'origine:
Vous pouvez utiliser JavaScript pour construire les valeurs dont l'e-mail aura besoin, puis faire une demande AJAX à une ressource serveur qui envoie réellement l'e-mail. (Je ne sais pas quelles langues / technologies côté serveur vous utilisez, donc cette partie dépend de vous.)
Si vous n'êtes pas familier avec AJAX, une recherche rapide sur Google vous donnera beaucoup d'informations. En général, vous pouvez le faire fonctionner rapidement avec la fonction $ .ajax () de jQuery. Il vous suffit d'avoir une page sur le serveur qui peut être appelée dans la demande.
la source
Il semble qu'une «réponse» à cela soit d'implémenter un client SMPT. Voir email.js pour une bibliothèque JavaScript avec un client SMTP.
Voici le dépôt GitHub pour le client SMTP. Sur la base du fichier README du référentiel, il semble que diverses cales ou polyfills peuvent être nécessaires en fonction du navigateur client, mais dans l'ensemble, cela semble certainement faisable (s'il n'est pas réellement accompli de manière significative), mais pas d'une manière qui peut être facilement décrite par même un raisonnablement- longue réponse ici.
la source
Il existe un service combiné. Vous pouvez combiner les solutions énumérées ci-dessus comme mandrill avec un service EmailJS, ce qui peut rendre le système plus sécurisé. Cependant, ils n'ont pas encore commencé le service.
la source
Une autre façon d'envoyer des e-mails à partir de JavaScript consiste à utiliser directtomx.com comme suit;
Appelez-le ensuite depuis votre page comme suit;
la source
Je le ferais avec la bibliothèque SMTPJ.Il offre un cryptage à vos informations d'identification telles que nom d'utilisateur, mot de passe, etc.
la source
Il n'y a pas de réponse directe à votre question car nous ne pouvons pas envoyer d'e-mails uniquement en utilisant javascript, mais il existe des moyens d'utiliser javascript pour envoyer des e-mails pour nous:
1) en utilisant une API pour appeler l'API via javascript pour envoyer l'e-mail pour nous, par exemple https://www.emailjs.com dit que vous pouvez utiliser un tel code ci-dessous pour appeler leur API après un certain réglage:
2) créez un code backend pour vous envoyer un e-mail, vous pouvez utiliser n'importe quel framework backend pour le faire pour vous.
3) en utilisant quelque chose comme:
qui ouvrira votre application de messagerie, cela pourrait entrer dans une fenêtre contextuelle bloquée dans votre navigateur.
En général, l'envoi d'un e-mail est une tâche de serveur, cela devrait donc être fait dans les langues du backend, mais nous pouvons utiliser javascript pour collecter les données nécessaires et les envoyer au serveur ou à l'api, nous pouvons également utiliser une application de troisième parité et les ouvrir via le navigateur en utilisant javascript comme mentionné ci-dessus.
la source
La réponse courte est que vous ne pouvez pas le faire en utilisant uniquement JavaScript. Vous auriez besoin d'un gestionnaire côté serveur pour vous connecter au serveur SMTP afin d'envoyer réellement le courrier. Il existe de nombreux scripts de messagerie simples en ligne, comme celui-ci pour PHP:
Utilisez Ajax pour envoyer une requête au script PHP, vérifiez que les champs obligatoires ne sont pas vides ou incorrects en utilisant js conservez également un enregistrement des e-mails envoyés par qui depuis votre serveur.
Recherchez toute erreur détectée lors de l'envoi de votre script et prenez les mesures appropriées.
Pour le résoudre, par exemple si l'adresse e-mail est incorrecte ou si le courrier n'est pas envoyé en raison d'un problème de serveur ou s'il est dans la file d'attente dans une telle condition, signalez-le immédiatement à l'utilisateur et empêchez l'envoi multiple du même e-mail encore et encore. Obtenez la réponse de votre script à l'aide de jQuery GET et POST
la source
Étant donné que toutes ces informations sont merveilleuses, il existe une petite API appelée Mandrill pour envoyer des e-mails à partir de javascript et cela fonctionne parfaitement. Vous pouvez lui donner un coup de feu. Voici un petit tutoriel pour commencer.
la source
Envoyer un e-mail en utilisant JavaScript ou jQuery
la source
var objO = new ActiveXObject('Outlook.Application');