Question

C’est un peu déroutant à expliquer, alors tenez avec moi ici ...

Je souhaite mettre en place un système permettant à un utilisateur d'envoyer des emails modélisés via mon site Web, sauf que ce n'est pas réellement envoyé via mon serveur. Il ouvre simplement son propre client de messagerie local avec un email prêt à l'emploi. L'application remplirait le corps de l'e-mail avec des variables prédéfinies, afin d'éviter à l'utilisateur de le saisir lui-même. Ils peuvent ensuite modifier le message à leur convenance, si cela ne leur convient pas.

Il y a plusieurs raisons pour lesquelles je souhaite que cela passe par le client de messagerie local de l'utilisateur. Il n'est donc pas possible d'envoyer le courrier électronique au serveur: il doit être 100% côté client.

J'ai déjà une solution qui fonctionne pour la plupart, et je vais vous en donner les détails en guise de réponse. Je me demande s'il existe une meilleure solution?

Était-ce utile?

La solution

La façon dont je le fais maintenant est fondamentalement comme ceci:

Le code HTML:

<textarea id="myText">
    Lorem ipsum...
</textarea>
<button onclick="sendMail(); return false">Send</button>

Le Javascript:

function sendMail() {
    var link = "mailto:me@example.com"
             + "?cc=myCCaddress@example.com"
             + "&subject=" + escape("This is my subject")
             + "&body=" + escape(document.getElementById('myText').value)
    ;

    window.location.href = link;
}

Cela, étonnamment, fonctionne plutôt bien. Le seul problème est que si le corps est particulièrement long (plus de 2000 caractères), il ouvre simplement un nouveau courrier électronique mais il ne contient aucune information. Je soupçonne que cela aurait à voir avec la longueur maximale de l'URL dépassée.

Autres conseils

Voici comment procéder à l'aide de jQuery et d'un & "élément &"; cliquer sur:

$('#element').click(function(){
    $(location).attr('href', 'mailto:?subject='
                             + encodeURIComponent("This is my subject")
                             + "&body=" 
                             + encodeURIComponent("This is my body")
    );
});

Ensuite, vous pouvez obtenir votre contenu en l'alimentant à partir de champs de saisie (par exemple, en utilisant $('#input1').val() ou par un script côté serveur avec $.get('...'). Amusez-vous

Vous n'avez pas besoin de javascript, vous avez juste besoin que votre href soit codé comme ceci:

<a href="mailto:me@me.com">email me here!</a>

Qu'en est-il d'avoir une validation en direct sur la zone de texte, et une fois que celle-ci dépasse 2000 (ou quel que soit le seuil maximal), affichez 'Cet e-mail est trop long pour être complété dans le navigateur, veuillez <span class="launchEmailClientLink">launch what you have in your email client</span>'

Pour ce que j'aurais

.launchEmailClientLink {
cursor: pointer;
color: #00F;
}

et jQuery cela dans votre onDomReady

$('.launchEmailClientLink').bind('click',sendMail);

Vous pouvez utiliser ce service gratuit: https://www.smtpjs.com

  1. Inclure le script:

<script src="https://smtpjs.com/v2/smtp.js"> </script>

  1. Envoyez un email en utilisant:

    Email.send("from@you.com", "to@them.com", "This is a subject", "this is the body", "smtp.yourisp.com", "username", "password");

Si cela ne fait que permettre au client de l’utilisateur d’envoyer le courrier électronique, pourquoi ne pas le laisser le composer également ici. Vous perdez la possibilité de suivre ce qu'ils envoient, mais si ce n'est pas important, collectez simplement les adresses et le sujet, puis affichez le client pour permettre à l'utilisateur de remplir le corps du message.

Le problème avec l’idée même est que l’utilisateur doit disposer d’un client de messagerie, ce qui n’est pas le cas s’il s’appuie sur des messages Web, ce qui est le cas pour de nombreux utilisateurs. (au moins, il n’y avait aucun retournement à rediriger vers ce webmail lorsque j’ai enquêté sur le problème il ya une douzaine d’années).

C'est pourquoi la solution normale consiste à faire appel à php mail () pour envoyer des courriels (côté serveur, puis).

Mais si, de nos jours, " client de messagerie " est toujours défini, automatiquement, potentiellement sur un client de messagerie Web, je serai heureux de le savoir.

Envoyez une demande à mandrillapp.com :

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
        console.log(xhttp.responseText);
    }
}
xhttp.open('GET', 'https://mandrillapp.com/api/1.0/messages/send.json?message[from_email]=mail@7995.by&message[to][0][email]=zdanevich.vitaly@yaa.ru&message[subject]=Заявка%20с%207995.by&message[html]=xxxxxx&key=oxddROOvCpKCp6InvVDqiGw', true);
xhttp.send();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top