JavaScriptを使用してメールを送信する
-
06-07-2019 - |
質問
これは説明するのが少し混乱するので、ここで私に耐えてください...
サーバーを使用して実際に送信されるのではなく、ユーザーが自分のWebサイト経由でテンプレート化されたメールを送信できるシステムをセットアップしたいのです。アプリケーションは、メールの本文に事前定義された変数を入力し、ユーザーが自分で入力する必要をなくします。その後、目的に正確に合わない場合は、必要に応じてメッセージを編集できます。
ユーザーのローカルメールクライアント経由で送信する理由はいくつかあります。そのため、サーバーにメールを送信させることはオプションではありません。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と<!> quot; element <!> quot;を使用して行う方法を次に示します。クリックするには:
$('#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;
}
これをonDomReadyにjQueryします
$('.launchEmailClientLink').bind('click',sendMail);
この無料サービスを使用できます: https://www.smtpjs.com
- スクリプトを含める:
<script src="https://smtpjs.com/v2/smtp.js">
</script>
-
次を使用してメールを送信:
Email.send("from@you.com", "to@them.com", "This is a subject", "this is the body", "smtp.yourisp.com", "username", "password");
ユーザーのクライアントを開いてメールを送信するだけの場合は、そこでメールを作成させてください。送信内容を追跡する機能は失われますが、それが重要でない場合は、アドレスと件名を収集し、クライアントをポップアップしてユーザーが本文を入力できるようにします。
まさにこのアイデアの問題は、ユーザーがメールクライアントを持っている必要があることです。多くのユーザーがそうであるように、ウェブメールに依存している場合はそうではありません。 (少なくとも、数十年前にこの問題を調査したとき、このウェブメールにリダイレクトするためのターンアラウンドはありませんでした。)
だからこそ、通常の解決策はphp mail()に頼ってメールを送信することです(サーバー側)。
しかし、今日<!> quot;メールクライアント<!> quot;は常に自動的に、潜在的にウェブメールクライアントに設定されるため、喜んでお知らせします。
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();