質問

これは説明するのが少し混乱するので、ここで私に耐えてください...

サーバーを使用して実際に送信されるのではなく、ユーザーが自分の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

  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()に頼ってメールを送信することです(サーバー側)。

しかし、今日<!> 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();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top