Вопрос

Это немного запутанно объяснять, так что потерпите меня здесь...

Я хочу настроить систему, в которой пользователь может отправлять шаблонные электронные письма через мой веб-сайт, за исключением того, что на самом деле они отправляются не с помощью моего сервера - вместо этого он просто открывает свой собственный локальный почтовый клиент с готовым к отправке электронным письмом.Приложение заполнило бы текст электронного письма предопределенными переменными, чтобы избавить пользователя от необходимости вводить его самостоятельно.Затем они могут отредактировать сообщение по своему усмотрению, если оно не совсем соответствует их целям.

Есть ряд причин, по которым я хочу, чтобы это отправлялось через локальный почтовый клиент пользователя, поэтому заставить сервер отправлять электронное письмо - это не вариант:это должно быть на 100% на стороне клиента.

У меня уже запущено в основном работающее решение, и я опубликую детали этого в качестве ответа, мне интересно, есть ли какой-нибудь лучший способ?

Это было полезно?

Решение

То, как я это делаю сейчас, в основном так:

HTML:

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

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;
}

Это, на удивление, работает довольно хорошо. Единственная проблема заключается в том, что если тело очень длинное (где-то более 2000 символов), оно просто открывает новое электронное письмо, но в нем нет информации. Я подозреваю, что это будет связано с превышением максимальной длины URL.

Другие советы

Вот способ сделать это, используя jQuery и элемент " element " нажать на:

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

Затем вы можете получить свое содержимое, либо загрузив его из полей ввода (т. е. используя $('#input1').val(), либо с помощью серверного сценария с помощью $.get('...'). Веселитесь

Вам не нужен javascript, вам просто нужно, чтобы ваш href был закодирован следующим образом:

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

Как насчет того, чтобы проверить текстовое поле в режиме реального времени, и когда оно превысит 2000 (или любой другой максимальный порог), отобразите «Это электронное письмо слишком длинное, чтобы его можно было заполнить в браузере, пожалуйста, <span class="launchEmailClientLink">launch what you have in your email client</span>»

На что бы я имел

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

и jQuery это в свой onDomReady

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

Вы можете воспользоваться этой бесплатной услугой: https://www.smtpjs.com

  1. Включите сценарий:

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

  1. Отправьте электронное письмо, используя:

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

Если это просто откроет клиент пользователя для отправки электронного письма, почему бы не позволить ему составить его и там. Вы теряете возможность отслеживать, что они отправляют, но если это не важно, просто соберите адреса и тему и откройте клиент, чтобы позволить пользователю заполнить тело.

Проблема самой идеи заключается в том, что у пользователя должен быть почтовый клиент, а это не тот случай, если он полагается на веб-почту, что имеет место для многих пользователей. (по крайней мере, не было никакой возможности перенаправить на эту веб-почту, когда я исследовал проблему дюжину лет назад).

Вот почему обычным решением является использование php mail () для отправки электронной почты (затем на стороне сервера).

Но если в наше время " почтовый клиент " я всегда буду рад узнать, что он всегда настроен автоматически для клиента веб-почты.

Отправьте запрос на 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();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top