JavaScriptからメールを送信する方法


244

私のWebサイトには、ページを更新せずに電子メールを送信する機能が必要です。だから私は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" />

これが関数を呼び出す方法ですが、JavaScript関数に何を入れるかわかりません。私が行った調査から、mailtoメソッドを使用する例を見つけましたが、私の理解では、実際にはサイトから直接送信されません。

したがって、私の質問は、JavaScript関数の内部に何を配置してWebサイトから直接メールを送信できるかを見つけることです。

function sendMail() {
    /* ...code here...    */
}

7
サーバー側の言語を使用して実際にメールを送信し、AJAXを使用して、希望する外観を実現します。
シャドウウィザードは、

1
これは少し遅れるかもしれませんが、これはあなたを助けるかもしれない:stackoverflow.com/questions/271171/...
PatrickMelia

2
Gmailユーザーはそれを使用できます
。developers.google.com/ gmail / apiを

以下で説明するように、JavaScriptから事前に作成されたテンプレートを使用して電子メールを直接送信でき、動的パラメーター、添付ファイル、キャプチャ、REST APIなどもサポートするEmailJSを確認することもできます。開始するには無料の階層も提供します[開示-私は作成者の1人です]
Sasha

承認された回答を使用すると、メールはユーザーのアカウントから送信されます。個人またはビジネスアカウントからメールを送信するには、javascriptを使用して、独自のサーバーまたはBytelineなどのサードパーティのサービスを介してメールを送信するのが正しい方法です。以下のこの回答の詳細。
dsbajna

回答:


311

JavaScriptで直接メールを送信することはできません。

ただし、ユーザーのメールクライアントを開くことはできます。

window.open('mailto:test@example.com');

件名と本文を事前入力するためのいくつかのパラメーターもあります。

window.open('mailto:test@example.com?subject=subject&body=body');

別の解決策は、サーバーにajax呼び出しを行って、サーバーがEメールを送信するようにすることです。誰もがサーバーを介して電子メールを送信できないように注意してください。


3
ページを開くプログラムがすでに電子メールクライアント機能を持っている場合(Opera 12.50など)、リンクを通常のURLとして開きます。彼らはまた、Firefox geckoエンジンを備えたThunderbirdでもあります。電子メールのハイパーリンクからWebページを新しいタブとして開くことができます。
user2284570 2013年

11
window.location.href:(この回答のように:stackoverflow.com/questions/271171/…)を使用して電子メールクライアントを開くこともできます。ユーザーが電子メールを使い終わっても、空のウィンドウは残りません。
イグノサウルス2014年

1
subjectbody変数ですか、それともフィールドに表示される実際のテキストですか?
Edward Karak 2014年

3
その答えは確かに質問には答えませんが、@ rahulroyの答えは適切です
Medet Tleukabiluly

3
私はさらに一歩進んでwindow.open( String( 'mailto:recipient^example.com' ).replace('^', '@') );スパムボットを混乱させます
Pavel Lebedeff 2017年

94

サーバー経由の間接-サードパーティAPIの呼び出し-安全で推奨


サーバーは、適切な認証と承認の後でサードパーティAPIを呼び出すことができます。APIキーはクライアントに公開されません。

node.js - https: //www.npmjs.org/package/node-mandrill

var mandrill = require('node-mandrill')('<your API Key>'); 

function sendEmail ( _name, _email, _subject, _message) {
    mandrill('/messages/send', {
        message: {
            to: [{email: _email , name: _name}],
            from_email: 'noreply@yourdomain.com',
            subject: _subject,
            text: _message
        }
    }, function(error, response){
        if (error) console.log( error );
        else console.log(response);
    });
}

// define your own email api which points to your server.

app.post( '/api/sendemail/', function(req, res){

    var _name = req.body.name;
    var _email = req.body.email;
    var _subject = req.body.subject;
    var _messsage = req.body.message;

    //implement your spam protection or checks. 

    sendEmail ( _name, _email, _subject, _message );

});

次に、クライアントで$ .ajaxを使用して、メールAPIを呼び出します。


クライアントから直接-サードパーティAPIを呼び出す-推奨されません


JavaScriptのみを使用してメールを送信する

in short: 
1. register for Mandrill to get an API key
2. load jQuery
3. use $.ajax to send an email

このような -

function sendMail() {
    $.ajax({
      type: 'POST',
      url: 'https://mandrillapp.com/api/1.0/messages/send.json',
      data: {
        'key': 'YOUR API KEY HERE',
        'message': {
          'from_email': 'YOUR@EMAIL.HERE',
          'to': [
              {
                'email': 'RECIPIENT@EMAIL.HERE',
                'name': 'RECIPIENT NAME (OPTIONAL)',
                'type': 'to'
              }
            ],
          'autotext': 'true',
          'subject': 'YOUR SUBJECT HERE!',
          'html': 'YOUR EMAIL CONTENT HERE! YOU CAN USE HTML!'
        }
      }
     }).done(function(response) {
       console.log(response); // if you're into that sorta thing
     });
}

https://medium.com/design-startups/b53319616782

注:APIキーは誰にでも見えるため、悪意のあるユーザーがあなたのキーを使用して、割り当てを使い果たす可能性があるメールを送信する可能性があることに注意してください。


8
記事にはこれが記載されていますが、ここでも機能するはずですが、APIキーをクライアントに送信する必要があるため、セキュリティの問題がいくつかあることもここで言う必要があると思います。これは悪用される可能性があります。
cantdutchthis 2014年

35

元の質問を本当に満足させる答えが見つかりませんでした。

  • Mandrillは新しい価格設定ポリシーのため望ましくない上に、認証情報を安全に保ちたい場合はバックエンドサービスが必要です。
  • 多くの場合、メールを非表示にして、リストに載らないようにすることをお勧めします(mailtoソリューションはこの問題を露呈し、ほとんどのユーザーにとって不便です)。
  • sendMailを設定したり、メールを送信するためだけにバックエンドを要求したりするのは面倒です。

標準のHTTP POSTリクエストを送信してメールを送信できるようにする簡単な無料サービスをまとめました。これはPostMailと呼ばれ、フォームを投稿したり、JavaScriptまたはjQueryを使用したりできます。サインアップすると、コピーしてWebサイトに貼り付けることができるコードが提供されます。ここではいくつかの例を示します。

JavaScript:

<form id="javascript_form">
    <input type="text" name="subject" placeholder="Subject" />
    <textarea name="text" placeholder="Message"></textarea>
    <input type="submit" id="js_send" value="Send" />
</form>

<script>

    //update this with your js_form selector
    var form_id_js = "javascript_form";

    var data_js = {
        "access_token": "{your access token}" // sent after you sign up
    };

    function js_onSuccess() {
        // remove this to avoid redirect
        window.location = window.location.pathname + "?message=Email+Successfully+Sent%21&isError=0";
    }

    function js_onError(error) {
        // remove this to avoid redirect
        window.location = window.location.pathname + "?message=Email+could+not+be+sent.&isError=1";
    }

    var sendButton = document.getElementById("js_send");

    function js_send() {
        sendButton.value='Sending…';
        sendButton.disabled=true;
        var request = new XMLHttpRequest();
        request.onreadystatechange = function() {
            if (request.readyState == 4 && request.status == 200) {
                js_onSuccess();
            } else
            if(request.readyState == 4) {
                js_onError(request.response);
            }
        };

        var subject = document.querySelector("#" + form_id_js + " [name='subject']").value;
        var message = document.querySelector("#" + form_id_js + " [name='text']").value;
        data_js['subject'] = subject;
        data_js['text'] = message;
        var params = toParams(data_js);

        request.open("POST", "https://postmail.invotes.com/send", true);
        request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

        request.send(params);

        return false;
    }

    sendButton.onclick = js_send;

    function toParams(data_js) {
        var form_data = [];
        for ( var key in data_js ) {
            form_data.push(encodeURIComponent(key) + "=" + encodeURIComponent(data_js[key]));
        }

        return form_data.join("&");
    }

    var js_form = document.getElementById(form_id_js);
    js_form.addEventListener("submit", function (e) {
        e.preventDefault();
    });
</script>

jQuery:

<form id="jquery_form">
    <input type="text" name="subject" placeholder="Subject" />
    <textarea name="text" placeholder="Message" ></textarea>
    <input type="submit" name="send" value="Send" />
</form>

<script>

    //update this with your $form selector
    var form_id = "jquery_form";

    var data = {
        "access_token": "{your access token}" // sent after you sign up
    };

    function onSuccess() {
        // remove this to avoid redirect
        window.location = window.location.pathname + "?message=Email+Successfully+Sent%21&isError=0";
    }

    function onError(error) {
        // remove this to avoid redirect
        window.location = window.location.pathname + "?message=Email+could+not+be+sent.&isError=1";
    }

    var sendButton = $("#" + form_id + " [name='send']");

    function send() {
        sendButton.val('Sending…');
        sendButton.prop('disabled',true);

        var subject = $("#" + form_id + " [name='subject']").val();
        var message = $("#" + form_id + " [name='text']").val();
        data['subject'] = subject;
        data['text'] = message;

        $.post('https://postmail.invotes.com/send',
            data,
            onSuccess
        ).fail(onError);

        return false;
    }

    sendButton.on('click', send);

    var $form = $("#" + form_id);
    $form.submit(function( event ) {
        event.preventDefault();
    });
</script>

繰り返しますが、適切な回答が見つからなかったため、このサービスを作成しました。


私はこの解決策を探していましたが、答えをありがとうございましたが、HTMLフォームにテキストボックスをもう1つ追加する方法を知りたいのです。ワーキング。これに対する解決策を知っていますか?
Suman

Gmailユーザーは実際に好きなことを実行できます
。developer.google.com/gmail/apiを

1
これが最良の解決策です。どうもありがとうございました。マンドリルはもう空き計画を持っていないとmailgunは、このようにCORSとJavaScriptをサポートしていません
stallingOne

3
これには他の人と同じ問題はありませんか?アクセストークン(APIキー)が公開される
グレッグエニス2017年

1
1日あたりのメール数は25です。
Archi

26

この投稿では、JavaScript関数内に何を配置するかを見つけることができます。

function getAjax() {
    try {
        if (window.XMLHttpRequest) {
            return new XMLHttpRequest();
        } else if (window.ActiveXObject) {
            try {
                return new ActiveXObject('Msxml2.XMLHTTP');
            } catch (try_again) {
                return new ActiveXObject('Microsoft.XMLHTTP');
            }
        }
    } catch (fail) {
        return null;
    }
}

function sendMail(to, subject) {
     var rq = getAjax();

     if (rq) {
         // Success; attempt to use an Ajax request to a PHP script to send the e-mail
         try {
             rq.open('GET', 'sendmail.php?to=' + encodeURIComponent(to) + '&subject=' + encodeURIComponent(subject) + '&d=' + new Date().getTime().toString(), true);

             rq.onreadystatechange = function () {
                 if (this.readyState === 4) {
                     if (this.status >= 400) {
                         // The request failed; fall back to e-mail client
                         window.open('mailto:' + to + '?subject=' + encodeURIComponent(subject));
                     }
                 }
             };

             rq.send(null);
         } catch (fail) {
             // Failed to open the request; fall back to e-mail client
             window.open('mailto:' + to + '?subject=' + encodeURIComponent(subject));
         }
     } else {
         // Failed to create the request; fall back to e-mail client
         window.open('mailto:' + to + '?subject=' + encodeURIComponent(subject));
     }
}

電子メールを送信するための独自のPHP(または任意の言語)スクリプトを提供します。


18

ニュースをお届けします。JavaScript自体でメールを送信することはできません。


OPの質問のコンテキストに基づいて、コメントで@KennyEvittによって指摘されているように、上記の私の答えはもう当てはまりません。JavaScriptをSMTPクライアントとして使用できるようです。

ただし、安全でブラウザ間の互換性が十分かどうかを確認するために、これ以上掘り下げていません。だから、私はあなたにそれを使うように勧めたり、落胆させたりすることはできません。自己責任。


1
ajaxまたは非表示のiframeでも実行できます...わからない
Zebra

1
@danialentzri:JavaScriptがメールリレーになることは決してありません。それが私が「それ自体」で意味したことです。
シェフ、2011

おっとっと!私はあなたに本当のことを言うために小さなモニターを持っています、そしてそれはスクロールバーをサポートしません。
Zebra

@KennyEvittを一目見たところ、まだメールリレーが必要なようです。それは基本的に私が私の答えで言ったことです。
シェフ、2014年

@Shef一目で何を見ましたか?他のメールクライアントが必要とする以上の要件は見つかりません。または、たとえば、Microsoft Outlookもメールを送信できないと主張していますか?これは技術的には真実ですが、他の誰かに理解してもらえるとは思いません。
ケニーエビット2014年

16

私はこの質問の答えを書くのが遅すぎることを知っていますが、それでも、これはJavaScriptを介してメールを送信することを考えているすべての人に使用されると思います。

私が提案する最初の方法は、サーバーでこれを行うためにコールバックを使用することです。あなたが本当にそれをjavascript folowingを使用して処理したいのであれば、私はお勧めします。

私が見つけた最も簡単な方法は、smtpJを使用することでした。メールの送信に使用できる無料のライブラリ。

1.以下のようなスクリプトを含めます

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

2.次のようなメールを送信できます

Email.send({
    Host : "smtp.yourisp.com",
    Username : "username",
    Password : "password",
    To : 'them@website.com',
    From : "you@isp.com",
    Subject : "This is the subject",
    Body : "And this is the body"
    }).then(
      message => alert(message)
    );

クライアント側にパスワードが表示されるため、これはお勧めできません。したがって、SMTP資格情報を暗号化し、それを単一のドメインにロックして、資格情報の代わりに安全なトークンを渡すことができます。

Email.send({
    SecureToken : "C973D7AD-F097-4B95-91F4-40ABC5567812",
    To : 'them@website.com',
    From : "you@isp.com",
    Subject : "This is the subject",
    Body : "And this is the body"
}).then(
  message => alert(message)
);

最後に、SMTPサーバーがない場合は、次のようなSMTPリレーサービスを使用します。 Elastic Email

また、必要なすべての例と安全なトークンを作成できる場所を見つけることができる公式のSmtpJS.com Webサイトへのリンクもここにあります。

この詳細がお役に立てば幸いです。ハッピーコーディング。


3
これにより、SMTPサーバーへのフルアクセスがサードパーティにまだ与えられているので、サードパーティは代わりにメールをリレーできます。
クエンティン、

SecureTokenは、作成時に指定したドメインでのみ有効であるため、別のドメインからjsを呼び出しても機能しません。
smoore4

8

地平線に新しい解決策があるようです。これはEmailJSと呼ばれます。彼らは、サーバーコードは必要ないと主張しています。招待状をリクエストできます。

2016年8月の更新:EmailJSはすでに稼働しているようです。1か月あたり最大200通のメールを無料で送信でき、大量のサブスクリプションを提供します。


これは少しお尻のステア、非常にきれいなUIですが、すべてのドキュメントの例やヘルプが含まれています。避ける。
Skarsnik 2016年

emailJSを試しましたが、自分のメールにしか送信されません。他のメールに送信するにはどうすればよいですか?
Maged Saeed

これは遅いですが、メールテンプレートセクションの@MagedSaeedで、テンプレートを編集するときに「To」メールを指定できます。テンプレートオプションを使用して、[宛先]フィールドを動的にすることもできます。彼らのドキュメントはそれを詳述するのに良い仕事をします。
abagh0703

6

window.open( 'mailto:test@example.com'); 上記のように、「test@example.com」メールアドレスをスパムボットによって収集されることから隠すことは何もしません。私はいつもこの問題に出くわしていました。

var recipient="test";
var at = String.fromCharCode(64);
var dotcom="example.com";
var mail="mailto:";
window.open(mail+recipient+at+dotcom);

4

JavaScriptはクライアント側であり、JavaScriptでメールを送信することはできません。ブラウザは多分だけmailto:を認識し、デフォルトのメールクライアントを起動します。


それで、情報が見つからなかった理由がわかります。ありがとうございました!!
user906357 2011

同じこと...ポートへのraw接続を可能にする将来のAPIが来ています...
user2284570

これが最も正確な答えです。それを可能にする他のすべての答えは、どこかでバックエンドを使用しています。OPはJavascriptのみを述べました。つまり、SAASバックエンドであっても、バックエンドはありません。すばらしい答えです。
ダンチェイス


4

function send() {
  setTimeout(function() {
    window.open("mailto:" + document.getElementById('email').value + "?subject=" + document.getElementById('subject').value + "&body=" + document.getElementById('message').value);
  }, 320);
}
input {
  text-align: center;
  border-top: none;
  border-right: none;
  border-left: none;
  height: 10vw;
  font-size: 2vw;
  width: 100vw;
}

textarea {
  text-align: center;
  border-top: none;
  border-right: none;
  border-left: none;
  border-radius: 5px;
  width: 100vw;
  height: 50vh;
  font-size: 2vw;
}

button {
  border: none;
  background-color: white;
  position: fixed;
  right: 5px;
  top: 5px;
  transition: transform .5s;
}

input:focus {
  outline: none;
  color: orange;
  border-radius: 3px;
}

textarea:focus {
  outline: none;
  color: orange;
  border-radius: 7px;
}

button:focus {
  outline: none;
  transform: scale(0);
  transform: rotate(360deg);
}
<!DOCTYPE html>
<html>

<head>
  <title>Send Email</title>
</head>

<body align=center>
  <input id="email" type="email" placeholder="yourfreind@something.somthing"></input><br><br>
  <input id="subject" placeholder="Subject"></input><br>
  <textarea id="message" placeholder="Message"></textarea><br>
  <button id="send" onclick="send()"><img src=https://www.dropbox.com/s/chxcszvnrdjh1zm/send.png?dl=1 width=50px height=50px></img></button>
</body>

</html>


JavaScriptクライアントから直接ではなく、電子メールクライアントを使用しています。
Weijing Jay Lin

2
また、完全な例があることは良いことですが、CSSは、例を理解するために全員がそれを除外する必要があるため、混乱を招くだけです。犯罪は意味しません。
ダンチェイス

2

JavaScriptはWebブラウザーからメールを送信できません。ただし、すでに実装しようとしたソリューションから後退すると、元の要件を満たす何かを実行できます。

ページを更新せずにメールを送信する

JavaScriptを使用して、電子メールが必要とする値を作成し、実際に電子メールを送信するサーバーリソースにAJAX要求を行うことができます。(使用しているサーバー側の言語/技術がわからないので、その部分はあなた次第です。)

AJAXに慣れていない場合は、簡単なGoogle検索で多くの情報が得られます。一般に、jQueryの$ .ajax()関数を使用すると、すばやく起動して実行できます。リクエストで呼び出すことができるサーバー上のページが必要です。


2

これに対する「答え」の1つは、SMPTクライアントを実装することです。SMTPクライアントを備えたJavaScriptライブラリについては、email.jsを参照してください。

SMTPクライアントのGitHubリポジトリは次のとおりです。リポジトリのREADMEに基づいて、クライアントブラウザーによってはさまざまなシムまたはポリフィルが必要になる可能性がありますが、全体的には確かに実現可能であるように見えます(実際に大幅に達成されていない場合)。ここで長い答え。


2

組み合わせサービスがあります。mandrillのような上記のソリューションを、システムをより安全にするサービスEmailJSと組み合わせることができます。彼らはまだサービスをまだ開始していません。


2

JavaScriptからメールを送信するもう1つの方法は、directtomx.comを次のように使用することです。

 Email = {
 Send : function (to,from,subject,body,apikey)
    {
        if (apikey == undefined)
        {
            apikey = Email.apikey;
        }
        var nocache= Math.floor((Math.random() * 1000000) + 1);
        var strUrl = "http://directtomx.azurewebsites.net/mx.asmx/Send?";
        strUrl += "apikey=" + apikey;
        strUrl += "&from=" + from;
        strUrl += "&to=" + to;
        strUrl += "&subject=" + encodeURIComponent(subject);
        strUrl += "&body=" + encodeURIComponent(body);
        strUrl += "&cachebuster=" + nocache;
        Email.addScript(strUrl);
    },
    apikey : "",
    addScript : function(src){
            var s = document.createElement( 'link' );
            s.setAttribute( 'rel', 'stylesheet' );
            s.setAttribute( 'type', 'text/xml' );
            s.setAttribute( 'href', src);
            document.body.appendChild( s );
    }
};

次に、ページから次のように呼び出します。

 window.onload = function(){
    Email.apikey = "-- Your api key ---";
    Email.Send("to@domain.com","from@domain.com","Sent","Worked!");
 }

これに追加するために、SMTPサーバーにアクセスできることを前提とする別の方法は、次のように呼び出されるsmtpjs.com/smtp.jsでこのスクリプトを使用することです。Email.send( "from@you.com"、 "to@them.com"、 "Subject"、 "Body。"、 "smtp.yourisp.com"、 "username"、 "password"); -smtpjs.comを参照
Fiach Reid

1
smtp.jsを使用してHTMLを送信できますか?
Alejandro Corredor 2017年

@AlejandroCorredor-はい、SMTPJSを介してHTMLメールを送信できます
Fiach Reid

2

SMTPJsライブラリでそれを行います。ユーザー名、パスワードなどの資格情報を暗号化します。


1
私のSMTPパスワードを小さな会社に教えて、私のパスワードと引き換えに私のサーバーを使用して電子メールを送信できるようにするのは本当に気が進まないでしょう。私は彼らに支払いません。彼らはサービスを実行し続ける強い動機はありません/私の資格情報を本当に保護します/彼らのスパムのために私のサーバーを使用しません。
クエンティン

@クエンティン私は理解しましたが、このライブラリは質問への答えになる可能性があります。
Suhail Mumtaz Awan

2

JavaScriptのみを使用してメールを送信することはできないため、質問に対する簡単な回答はありませんが、JavaScriptを使用してメールを送信する方法があります。

1)APIを使用し、JavaScript経由でAPIを呼び出して電子メールを送信します。たとえば、https://www.emailjs.comでは、以下のコードを使用して、設定後にAPIを呼び出すことができます。

var service_id = 'my_mandrill';
var template_id = 'feedback';
var template_params = {
name: 'John',
reply_email: 'john@doe.com',
message: 'This is awesome!'
};

emailjs.send(service_id,template_id,template_params);

2)電子メールを送信するバックエンドコードを作成します。バックエンドフレームワークを使用してそれを行うことができます。

3)次のようなものを使用する:

window.open('mailto:me@http://stackoverflow.com/');

これにより、メールアプリケーションが開きます。これにより、ブラウザのポップアップがブロックされる場合があります。

一般に、メールの送信はサーバータスクであるため、バックエンド言語で行う必要がありますが、JavaScriptを使用して必要なデータを収集し、サーバーまたはAPIに送信できます。また、サードパリティアプリケーションを使用して開くこともできます。上記のように、JavaScriptを使用してブラウザから。


5
Re(1):私のSMTPパスワードを小さな会社に渡すのは本当に気が進まないので、私の会社はパスワードと引き換えに私のサーバーを使用して電子メールを送信できます。私は彼らに支払いません。彼らはサービスを実行し続ける強い動機はありません/私の資格情報を本当に保護します/彼らのスパムのために私のサーバーを使用しません。
クエンティン

0

簡単に言えば、JavaScriptだけを使用してそれを行うことはできません。実際にメールを送信するには、SMTPサーバーに接続するサーバー側ハンドラーが必要です。PHP用の次のような簡単なメールスクリプトがオンラインで多数あります。

Ajaxを使用してPHPスクリプトにリクエストを送信し、jsを使用して必須フィールドが空でないか正しくないことを確認し、サーバーからだれが送信したメールの記録も保持します。

function sendMail() is good for doing that.

スクリプトからのメール送信中に検出されたエラーを確認し、適切なアクションを実行してください。
たとえば、メールアドレスが正しくない、サーバーの問題によりメールが送信されない、またはそのような状態でキューにある場合の解決策として、すぐにユーザーに報告し、同じメールを何度も何度も送信しないようにします。jQuery GETおよびPOSTを使用してスクリプトから応答を取得する

$ .get(URL、callback); $ .post(URL、callback);



-5

JavaScriptまたはjQueryを使用してメールを送信する

var ConvertedFileStream;
var g_recipient;
var g_subject;
var g_body;
var g_attachmentname;


function SendMailItem(p_recipient, p_subject, p_body, p_file, p_attachmentname, progressSymbol) {

    // Email address of the recipient 
    g_recipient = p_recipient;

   // Subject line of an email
    g_subject = p_subject;

   // Body description of an email
    g_body = p_body;

    // attachments of an email
    g_attachmentname = p_attachmentname;

    SendC360Email(g_recipient, g_subject, g_body, g_attachmentname);

}

function SendC360Email(g_recipient, g_subject, g_body, g_attachmentname) {
    var flag = confirm('Would you like continue with email');
    if (flag == true) {

        try {
            //p_file = g_attachmentname;
            //var FileExtension = p_file.substring(p_file.lastIndexOf(".") + 1);
           // FileExtension = FileExtension.toUpperCase();
            //alert(FileExtension);
            SendMailHere = true;

            //if (FileExtension != "PDF") {

            //    if (confirm('Convert to PDF?')) {
            //        SendMailHere = false;                    
            //    }

            //}
            if (SendMailHere) {
                var objO = new ActiveXObject('Outlook.Application');

                var objNS = objO.GetNameSpace('MAPI');

                var mItm = objO.CreateItem(0);

                if (g_recipient.length > 0) {
                    mItm.To = g_recipient;
                }

                mItm.Subject = g_subject;

                // if there is only one attachment                 
                // p_file = g_attachmentname;
                // mAts.add(p_file, 1, g_body.length + 1, g_attachmentname);

                // If there are multiple attachment files
                //Split the  files names
                var arrFileName = g_attachmentname.split(";");
                 // alert(g_attachmentname);
                //alert(arrFileName.length);
                var mAts = mItm.Attachments;

                for (var i = 0; i < arrFileName.length; i++)
                {
                    //alert(arrFileName[i]);
                    p_file = arrFileName[i];
                    if (p_file.length > 0)
                    {                     
                        //mAts.add(p_file, 1, g_body.length + 1, g_attachmentname);
                        mAts.add(p_file, i, g_body.length + 1, p_file);

                    }
                }

                mItm.Display();

                mItm.Body = g_body;

                mItm.GetInspector.WindowState = 2;

            }
            //hideProgressDiv();

        } catch (e) {
            //debugger;
            //hideProgressDiv();
            alert('Unable to send email.  Please check the following: \n' +
                    '1. Microsoft Outlook is installed.\n' +
                    '2. In IE the SharePoint Site is trusted.\n' +
                    '3. In IE the setting for Initialize and Script ActiveX controls not marked as safe is Enabled in the Trusted zone.');
        }
    }
  }

3
このコードが質問にどのように答えるかについて詳しく説明してください。
JAL、

これはActiveXを使用しているようで、OutlookがインストールされているPC上のIEでのみ機能しますvar objO = new ActiveXObject('Outlook.Application');
シック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.