কীভাবে জাভাস্ক্রিপ্ট থেকে ইমেল প্রেরণ করা যায়


244

আমি চাই যে আমার ওয়েবসাইটটি পৃষ্ঠাটি রিফ্রেশ না করে ইমেল প্রেরণের ক্ষমতা রাখুক। সুতরাং আমি জাভাস্ক্রিপ্ট ব্যবহার করতে চাই।

<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" />

এখানে আমি কীভাবে ফাংশনটি কল করতে চাই তা তবে জাভাস্ক্রিপ্ট ফাংশনে কী রাখবেন তা আমি নিশ্চিত নই। আমি যে গবেষণাটি করেছি তা থেকে আমি একটি উদাহরণ পেয়েছি যা মেলটো পদ্ধতি ব্যবহার করে তবে আমার বোঝার বিষয়টি এটি আসলে সাইট থেকে সরাসরি প্রেরণ করে না।

সুতরাং আমার প্রশ্নটি হ'ল আমি ওয়েবসাইট থেকে সরাসরি একটি ইমেল প্রেরণের জন্য জাভাস্ক্রিপ্ট ফাংশনটির ভিতরে কী রাখব তা জানতে পারি।

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

7
প্রকৃতপক্ষে ইমেল প্রেরণের জন্য সার্ভার সাইড ল্যাঙ্গুয়েজ এবং আপনার পছন্দটি দেখতে এবং দেখতে বোধ করার জন্য এজেএক্স ব্যবহার করুন।
শেডো উইজার্ড আপনার পক্ষে কান

1
এটি কিছুটা দেরিতে হতে পারে তবে এটি আপনাকে সহায়তা করতে পারে: stackoverflow.com/questions/271171/…
প্যাট্রিকমেলিয়া

2
জিমেইল ব্যবহারকারীরা এটি থাকতে পারে, দেখুন ডেভেলপারস
google.com/gmail/api

নীচে উল্লিখিত হিসাবে, আপনি ইমেলজেএসও একবার দেখতে চাইতে পারেন , যা জাভাস্ক্রিপ্ট থেকে সরাসরি প্রাক-বিল্ট টেম্পলেট ব্যবহার করে ইমেল প্রেরণ করতে দেয় এবং গতিশীল পরামিতি, সংযুক্তি, ক্যাপচা, আরএসটি এপিআই এবং আরও অনেক কিছু সমর্থন করে supports শুরু করার জন্য আমরা একটি
সাশা

দ্রষ্টব্য আপনি যদি স্বীকৃত উত্তরটি ব্যবহার করেন তবে ইমেলটি ব্যবহারকারীর অ্যাকাউন্ট থেকে আসবে। আপনার ব্যক্তিগত বা ব্যবসায়িক অ্যাকাউন্ট থেকে ইমেল প্রেরণ করার জন্য সঠিক উপায়টি হল জাভাস্ক্রিপ্টটি নিজের সার্ভারের মাধ্যমে ইমেল প্রেরণ বা তৃতীয় পক্ষের পরিষেবা যেমন বাইটলাইন হিসাবে প্রেরণ করা । নীচে এই উত্তর আরও বিশদ ।
dsbajna

উত্তর:


311

আপনি জাভাস্ক্রিপ্ট সরাসরি ইমেল প্রেরণ করতে পারবেন না।

তবে আপনি ব্যবহারকারীর মেল ক্লায়েন্টটি খুলতে পারেন:

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

বিষয় এবং শরীরের প্রাক পূরণ করার জন্য কিছু পরামিতি রয়েছে:

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

আর একটি সমাধান হ'ল আপনার সার্ভারে একটি অজ্যাক্স কল করা যাতে সার্ভারটি ইমেল প্রেরণ করে। আপনার সার্ভারের মাধ্যমে কাউকে কোনও ইমেল প্রেরণের অনুমতি না দেওয়ার বিষয়ে সতর্ক হন।


3
পৃষ্ঠাটি খোলার প্রোগ্রামটিতে যদি ইতিমধ্যে ক্লায়েন্টের বৈশিষ্ট্যগুলি ই-মেইল থাকে .. (যেমন অপেরা 12.50) তবে এটি নিয়মিত URL হিসাবে লিঙ্কটি খুলবে। এগুলি হ'ল থান্ডারবার্ড যা ফায়ারফক্স গেকো ইঞ্জিন রয়েছে: এটি ইমেলগুলিতে হাইপারলিঙ্কগুলি থেকে নতুন ট্যাব হিসাবে ওয়েব পৃষ্ঠা খুলতে পারে।
ব্যবহারকারী 2284570

11
কেবলমাত্র একটি নোট, আপনি ইমেল ক্লায়েন্টটি খুলতে window.location.href(যেমন এই উত্তরের মতো: stackoverflow.com/questions/271171/… ) ও ব্যবহার করতে পারেন এবং ব্যবহারকারী ইমেলটি শেষ করার পরে খালি উইন্ডোটি পিছনে ছেড়ে যায় না।
ইগনোসৌর

1
হয় subjectএবং bodyভেরিয়েবল অথবা তারা প্রকৃত পাঠ্য ক্ষেত্র হবে কি?
এডওয়ার্ড কারাক

3
এই উত্তরটি আসলে প্রশ্নের উত্তর দেয় না, তবে @ রাহুল্রয়ের উত্তর ভাল
মেডেট টেলিউবিলি

3
আমি আরও এক ধাপ এগিয়ে যাব এবং window.open( String( 'mailto:recipient^example.com' ).replace('^', '@') );স্প্যামের বট গুলিয়ে ফেলতে যাব
পাভেল লেবেডেফ

94

আপনার সার্ভারের মাধ্যমে পরোক্ষ - তৃতীয় পক্ষের এপিআই কল করা - সুরক্ষিত এবং প্রস্তাবিত


আপনার সার্ভার যথাযথ প্রমাণীকরণ এবং অনুমোদনের পরে 3 য় পক্ষের এপিআই কল করতে পারে। API কীগুলি ক্লায়েন্টের কাছে প্রকাশিত হয়নি।

নোড.জেএস - 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 );

});

এবং তারপরে আপনার ইমেল এপিআই কল করতে ক্লায়েন্টে $ .জ্যাক্স ব্যবহার করুন।


সরাসরি ক্লায়েন্ট থেকে - তৃতীয় পক্ষের এপিআই কল করা - পুনরুদ্ধার করা হয়নি


কেবল জাভাস্ক্রিপ্ট ব্যবহার করে একটি ইমেল প্রেরণ করুন

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

দ্রষ্টব্য: আপনার এপিআই কীটি কারও কাছে দৃশ্যমান তা মনে রাখবেন, সুতরাং যে কোনও দূষিত ব্যবহারকারী আপনার কোটা খেয়ে ফেলতে পারে এমন ইমেলগুলি প্রেরণের জন্য আপনার কীটি ব্যবহার করতে পারে।


8
যদিও নিবন্ধটি এটি বলে না আমি মনে করি এটি এখানেও বলা উচিত যেমন এটি কাজ করবে তবুও কিছু সুরক্ষা সমস্যা রয়েছে কারণ আপনার ক্লায়েন্টকে আপনার এপিআই কী পাঠাতে হবে। এটি আপত্তিজনক হতে পারে।
cantdutchthis

35

আমি এমন কোনও উত্তর খুঁজে পাইনি যা আসল প্রশ্নটি সত্যই সন্তুষ্ট করেছে।

  • নতুন মূল্য নীতিমালার কারণে ম্যান্ড্রিল কাঙ্ক্ষিত নয়, এছাড়াও আপনি যদি আপনার শংসাপত্রগুলি নিরাপদ রাখতে চান তবে এটির জন্য ব্যাকএন্ড পরিষেবা প্রয়োজন।
  • আপনার ইমেলটি আড়াল করা প্রায়শই বাঞ্ছনীয় যাতে আপনি কোনও তালিকার শেষ না হন (মেইলটো সমাধানটি এই সমস্যাটি প্রকাশ করে এবং বেশিরভাগ ব্যবহারকারীর পক্ষে সুবিধাজনক নয়)।
  • সেন্ডমেইল সেট আপ করার ঝামেলা বা কেবল একটি ইমেল প্রেরণের জন্য মোটেই ব্যাকএন্ডের প্রয়োজন।

আমি একসাথে একটি সাধারণ বিনামূল্যে পরিষেবা রেখেছি যা আপনাকে কোনও ইমেল প্রেরণের জন্য একটি প্রমিত HTTP পোষ্ট অনুরোধ করতে দেয় P একে পোস্টমেল বলে এবং আপনি কেবল একটি ফর্ম পোস্ট করতে পারেন, জাভাস্ক্রিপ্ট বা jQuery ব্যবহার করতে পারেন। আপনি সাইন আপ করার সময়, এটি আপনাকে এমন কোড সরবরাহ করে যা আপনি নিজের ওয়েবসাইটটিতে অনুলিপি এবং কপি করতে পারেন। এখানে কিছু উদাহরন:

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>

আবার, সম্পূর্ণ প্রকাশে, আমি এই পরিষেবাটি তৈরি করেছি কারণ আমি উপযুক্ত উত্তর খুঁজে পাইনি।


আমি এই সমাধানটির সন্ধান করছিলাম, উত্তরের জন্য ধন্যবাদ তবে আমি অবাক হয়েছি কীভাবে আমি এইচটিএমএল আকারে আরও একটি পাঠ্য বাক্স যুক্ত করতে পারি, কারণ যখনই আমি অন্য কোনও তথ্যের জন্য আরও একটি পাঠ্য বাক্স যুক্ত করার জন্য কোডটি পরিবর্তন করার চেষ্টা করছি, কোডটি বন্ধ হয়ে গেল কাজ। আপনি কি এর কোনও সমাধান জানেন?
সুমন

জিমেইল ব্যবহারকারীরা আপনার
পছন্দমতো

1
এটিই সেরা সমাধান। আপনাকে অনেক ধন্যবাদ. ম্যান্ড্রিলের আর কোনও নিখরচায় পরিকল্পনা নেই এবং মেলগান করগুলি সমর্থন করে না এবং এইভাবে জাভাস্ক্রিপ্ট
স্টলিংএল

3
এটির মতো অন্যদের মতো সমস্যা নেই? অ্যাক্সেস টোকেন (এপিআই কী) উন্মুক্ত করা হয়েছে
গ্রেগ এনিস

1
তাদের প্রতিদিনের 25 টি ইমেলের দৈনিক সীমা রয়েছে।
আরচি

26

আপনি এই পোস্টে জাভাস্ক্রিপ্ট ফাংশন ভিতরে রাখা কি পেতে পারেন।

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

ই-মেইল প্রেরণের জন্য আপনার নিজস্ব পিএইচপি (বা যে কোনও ভাষা) স্ক্রিপ্ট সরবরাহ করুন।


18

আমি আপনার কাছে খবরটি ভঙ্গ করছি। আপনি প্রতি সেভায় জাভাস্ক্রিপ্ট সহ একটি ইমেল প্রেরণ করতে পারবেন না।


ওপির প্রশ্নের প্রেক্ষাপটের উপর ভিত্তি করে, আমার উপরের উত্তরটি আর মন্তব্য করে সত্যায়িত নয়, যেমন মন্তব্যগুলিতে @ কেনি এভিট দ্বারা চিহ্নিত করা হয়েছে। দেখে মনে হচ্ছে আপনি একটি এসএমটিপি ক্লায়েন্ট হিসাবে জাভাস্ক্রিপ্ট ব্যবহার করতে পারেন ।

তবে , এটি সুরক্ষিত এবং ক্রস ব্রাউজার যথেষ্ট পরিমাণে সামঞ্জস্যপূর্ণ কিনা তা জানতে আমি আরও গভীর খনন করি নি। সুতরাং, আমি আপনাকে এটি ব্যবহার করতে উত্সাহিত করতে বা নিরুৎসাহিত করতে পারি না। আপনার নিজের ঝুঁকিতে ব্যবহার করুন।


1
এজাক্স বা এমনকি লুকানো আইফ্রেমগুলি দিয়ে করা যেতে পারে ... আপনি কখনই জানেন না
জেব্রা

1
@ উদানিয়ালটিজ্রি: জাভাস্ক্রিপ্ট কখনই মেল রিলে হবে না, এটাই আমি "প্রতি সে" দ্বারা বোঝাতে চাইছি ।
শেফ

ওহো! আপনাকে সত্য বলার জন্য আমার কাছে একটি ছোট মনিটর রয়েছে এবং এটি স্ক্রোলবারগুলি সমর্থন করে না।
জেব্রা

@ কেনিএভিটকে আমি যে তাড়াতাড়ি দেখেছি তা থেকে দেখে মনে হচ্ছে আপনার এখনও একটি মেল রিলে দরকার need মূলত আমি আমার উত্তরে যা বলেছি তা হ'ল।
শেফ

@ শেফ আপনার দ্রুত নজরে আপনি কী দেখতে পেয়েছেন? অন্য কোনও ইমেল ক্লায়েন্টের প্রয়োজনের বাইরে আমি কোনও কিছুর জন্য প্রয়োজনীয়তা পাচ্ছি না। বা আপনি কি দাবি করছেন যে, উদাহরণস্বরূপ, মাইক্রোসফ্ট আউটলুক ইমেল প্রেরণ করতে পারে না? এটি প্রযুক্তিগত দিক থেকে সত্য তবে কোনও অর্থে নয় যে আমি অন্য কারও বোঝার প্রত্যাশা করব।
কেনি এভিট

16

আমি জানি আমি এই প্রশ্নের উত্তর লিখতে দেরি করে ফেলেছি তবে তবুও আমি মনে করি এটি জাভাস্ক্রিপ্টের মাধ্যমে ইমেল প্রেরণের কথা ভাবছেন এমন কারও পক্ষে ব্যবহার করা হবে।

আমি প্রথম পরামর্শ দিচ্ছি সার্ভারে এটি করার জন্য একটি কলব্যাক ব্যবহার করা। আপনি যদি সত্যিই জাভাস্ক্রিপ্টের ফলোয়িং ব্যবহার করে এটি পরিচালনা করতে চান তবে আমার পরামর্শটি।

আমি খুঁজে পাওয়া সবচেয়ে সহজ উপায়টি ছিল এসএমটিপিজে ব্যবহার করা s একটি বিনামূল্যে গ্রন্থাগার যা ইমেল প্রেরণে ব্যবহার করা যেতে পারে।

1. নীচের মত স্ক্রিপ্ট অন্তর্ভুক্ত

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

২. আপনি হয় এই জাতীয় ইমেল প্রেরণ করতে পারেন

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

যা পরামর্শদায়ক নয় কারণ এটি আপনার পাসওয়ার্ডটি ক্লায়েন্টের পক্ষে প্রদর্শন করবে hus তাই আপনি নিম্নলিখিতটি করতে পারেন যা আপনার এসএমটিপি শংসাপত্রগুলি এনক্রিপ্ট করে এবং এটি একটি ডোমেনে লক করে রাখতে পারে এবং পরিবর্তে শংসাপত্রগুলির পরিবর্তে একটি সুরক্ষিত টোকন পাস করে।

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

অবশেষে আপনার যদি এসএমটিপি সার্ভার না থাকে আপনি একটি এসএমটিপি রিলে পরিষেবা যেমন ইলাস্টিক ইমেল ব্যবহার করেন

এছাড়াও এখানে অফিসিয়াল শ্রীমতিপাজেএস.কম ওয়েবসাইটের লিঙ্কটি রয়েছে যেখানে আপনি আপনার প্রয়োজনীয় সমস্ত উদাহরণ এবং যেখানে আপনি নিজের সুরক্ষিত টোকেন তৈরি করতে পারেন তা খুঁজে পেতে পারেন।

আমি আশা করি কেউ এই বিশদটি দরকারী বলে মনে করেন। শুভ কোডিং।


3
এটি এখনও আপনার এসএমটিপি সার্ভারকে তৃতীয় পক্ষকে সম্পূর্ণ অ্যাক্সেস দিচ্ছে যাতে তারা আপনার জন্য মেলে রিলে করতে পারে… কিসের বিনিময়ে?
কোয়ান্টিন

সিকিউরটোকেন কেবলমাত্র কোনও ডোমেনের জন্য বৈধ যেটি আপনি তৈরি করার সময় নির্দিষ্ট করেছেন, সুতরাং অন্য ডোমেন থেকে জেএস কল করা কার্যকর হবে না।
স্মুথ 4

8

দিগন্তে একটি নতুন সমাধান বলে মনে হচ্ছে। একে ইমেলজেএস বলা হয় । তাদের দাবি যে কোনও সার্ভার কোডের প্রয়োজন নেই। আপনি একটি আমন্ত্রণ অনুরোধ করতে পারেন।

আগস্ট 2016 আপডেট করুন: ইমেলজেএস ইতিমধ্যে লাইভ বলে মনে হচ্ছে। আপনি বিনামূল্যে মাসে 200 টি ইমেল প্রেরণ করতে পারেন এবং এটি উচ্চতর ভলিউমের জন্য সাবস্ক্রিপশন দেয়।


এটি কিছুটা বাম স্টিয়ার, খুব সুন্দর ইউআই তবে সমস্ত ডকুমেন্টেশনের উদাহরণ বা সহায়তা স্টাফ করুন। এড়াতে.
স্কারসনিক

আমি ইমেল জেএস চেষ্টা করেছি, তবে এটি কেবল আমার ইমেলটিতে প্রেরণ করে। আমি কীভাবে অন্য কোনও ইমেল পাঠাতে পারি?
ম্যাজেড সাইদ

এটি দেরিতে হলেও @ ম্যাগডসেইড ইমেল টেম্পলেট বিভাগে, কোনও টেম্পলেট সম্পাদনা করার সময় আপনি "টু" ইমেলটি নির্দিষ্ট করতে পারেন। এমনকি তাদের টেম্প্লেটিং বিকল্পটি ব্যবহার করে আপনি "টু" ফিল্ডটিকে গতিময় করতে পারেন। তাদের ডক্স এটির বিশদ বর্ণনা করে একটি ভাল কাজ করে।
abagh0703

6

window.open (, 'mailto: test@example.com'); উপরের মতো "টেস্ট@example.com" ইমেল ঠিকানাটি স্প্যামবটসের মাধ্যমে ফসল থেকে আড়াল করার জন্য কিছুই করে না। আমি ক্রমাগত এই সমস্যার মধ্যে দৌড়াতে ব্যবহৃত।

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

4

জাভাস্ক্রিপ্ট ক্লায়েন্ট-সাইড, আপনি জাভাস্ক্রিপ্টের সাথে ইমেল করতে পারবেন না। ব্রাউজার কেবলমাত্র চিনতে পারে mailto:এবং আপনার ডিফল্ট মেল ক্লায়েন্ট শুরু করে।


এটি ব্যাখ্যা করবে যে কেন আমি এটিতে কোনও তথ্য পাই না। ধন্যবাদ!!
ব্যবহারকারী 906357

একই জিনিস ... ভবিষ্যতের এপিআই যা কোনও বন্দরের কাঁচা সংযোগের অনুমতি দিতে পারে তা আসছে ...
ব্যবহারকার 2284570

এটিই সবচেয়ে সঠিক উত্তর! অন্যান্য উত্তরগুলি এটির পক্ষে এটি সম্ভব করে তোলে, সেগুলি কোথাও একটি ব্যাক-এন্ড ব্যবহার করছে .. ওপি কেবল জাভাস্ক্রিপ্ট বলেছে। অর্থ, কোনও ব্যাক-এন্ড দয়া করে না, এমনকি এটি SAAS ব্যাক-এন্ড হলেও। দুর্দান্ত উত্তর।
ড্যান চেজ

4

আপনার sendMail()কার্যক্রমে আপনার ব্যাকএন্ডে একটি এজাক্স কল যুক্ত করুন, যেখানে আপনি এটি সার্ভার সাইডে প্রয়োগ করতে পারেন।


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>


এটি সরাসরি জাভাস্ক্রিপ্ট থেকে নয়, ইমেল ক্লায়েন্ট ব্যবহার করছে।
ওয়েজিং জে লিন

2
এটির পুরো উদাহরণটি দেখতে খুব ভাল, সিএসএস জিনিসগুলিকে বিভ্রান্ত করে যেহেতু প্রত্যেককে উদাহরণটি বোঝার জন্য এটি ফিল্টার করতে হবে। কোন অপরাধ মানে না।
ড্যান চেজ

2

জাভাস্ক্রিপ্ট কোনও ওয়েব ব্রাউজার থেকে ইমেল প্রেরণ করতে পারে না। তবে আপনি যে সমাধানটি ইতিমধ্যে বাস্তবায়নের চেষ্টা করেছেন সেখান থেকে সরে দাঁড়ানো, আপনি এমন কিছু করতে পারেন যা মূল প্রয়োজনীয়তা পূরণ করে:

পৃষ্ঠাটি রিফ্রেশ না করে একটি ইমেল প্রেরণ করুন

আপনি ইমেলটির প্রয়োজন হবে এমন মানগুলি তৈরি করতে জাভাস্ক্রিপ্ট ব্যবহার করতে পারেন এবং তারপরে প্রকৃতপক্ষে ইমেল প্রেরণকারী কোনও সার্ভার রিসোর্সে AJAX অনুরোধ করতে পারেন। (আপনি কী সার্ভার-সাইডের ভাষা / প্রযুক্তি ব্যবহার করছেন তা আমি জানি না, সুতরাং সেই অংশটি আপনার উপর নির্ভর করে)

আপনি যদি এজেএক্সের সাথে পরিচিত না হন তবে একটি দ্রুত গুগল অনুসন্ধান আপনাকে প্রচুর তথ্য দেবে। সাধারণত আপনি এটি পেতে এবং jQuery এর aj .জ্যাক্স () ফাংশন দিয়ে দ্রুত চলতে পারেন। আপনার কেবলমাত্র সার্ভারে একটি পৃষ্ঠা থাকা দরকার যা অনুরোধে ডাকা যেতে পারে।


2

দেখে মনে হচ্ছে এটির একটি 'উত্তর' হ'ল এসএমপিটি ক্লায়েন্টটি প্রয়োগ করা। একটি এসএমটিপি ক্লায়েন্ট সহ একটি জাভাস্ক্রিপ্ট লাইব্রেরির জন্য ইমেল.জেএস দেখুন ।

এসএমটিপি ক্লায়েন্টের জন্য এখানে গিটহাব রেপো । রেপোর README এর উপর ভিত্তি করে, এটি প্রদর্শিত হয় যে ক্লায়েন্ট ব্রাউজারের উপর নির্ভর করে বিভিন্ন শিমস বা পলিফিলের প্রয়োজন হতে পারে, তবে সামগ্রিকভাবে এটি সম্ভবত সম্ভব বলে মনে হয় (যদি বাস্তবে উল্লেখযোগ্যভাবে সম্পন্ন না হয়) তবে এটি এমনভাবে নয় যা সহজেই যুক্তিসঙ্গতভাবে বর্ণনাযোগ্য- এখানে দীর্ঘ উত্তর।


2

একটি সংমিশ্রণ পরিষেবা আছে। আপনি উপরের তালিকাভুক্ত সমাধানগুলিকে ম্যান্ড্রিলের মতো কোনও পরিষেবা ইমেলজেএস-এর সাথে একত্রিত করতে পারেন যা সিস্টেমটিকে আরও সুরক্ষিত করতে পারে। যদিও তারা এখনও পরিষেবাটি শুরু করেনি।


2

জাভাস্ক্রিপ্ট থেকে ইমেল প্রেরণের আরেকটি উপায় হ'ল ডাইরেক্টটমেক্স.কম ব্যবহার করুন নীচে ;

 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!");
 }

কেবল এটি যুক্ত করার জন্য, একটি বিকল্প উপায়, ধরে নেওয়া যে আপনার কোনও এসএমটিপি সার্ভারে অ্যাক্সেস রয়েছে তা এই স্ক্রিপ্টটি smtpjs.com/smtp.js এ ব্যবহার করা হয় , যা নীচে বলা হয়; ইমেল.সেন্ড ("from@you.com", "to@them.com", "বিষয়", "দেহ।", "Smtp.yourisp.com", "ব্যবহারকারীর নাম", "পাসওয়ার্ড"); - smtpjs.com দেখুন
ফিয়াচ রেড

1
আপনি কি smtp.js ব্যবহার করে এইচটিএমএল পাঠাতে পারবেন?
আলেজান্দ্রো কোরেডর

@ আলেজান্দ্রো কর্রেডর - হ্যাঁ, আপনি এসএমটিপিজেএস
ফিয়াচ রিডের

2

আমি এটি এসএমটিপিজে লাইব্রেরির মাধ্যমে করব I এটি আপনার শংসাপত্রগুলিতে এনক্রিপশন প্রস্তাব করে যেমন ব্যবহারকারীর নাম, পাসওয়ার্ড ইত্যাদি


1
আমি একটি ছোট্ট ছোট সংস্থাকে আমার এসএমটিপি পাসওয়ার্ড দিতে সত্যিই অনিচ্ছুক হব যাতে তারা আমার পাসওয়ার্ড ছাড়া আর কিছুই না করে আমার সার্ভার ব্যবহার করে ইমেলগুলি প্রেরণ করতে পারে। আমি তাদের পরিশোধ করছি না। পরিষেবাটি চালু রাখতে / সত্যই আমার শংসাপত্রগুলি রক্ষা করতে / তাদের স্প্যামের জন্য আমার সার্ভারটি ব্যবহার না করার দৃ They় প্রেরনা নেই।
কোয়ান্টিন

@ কুইন্টিন আমি বুঝতে পেরেছি, তবে এই গ্রন্থাগারটি প্রশ্নের উত্তর হতে পারে।
সুহাইল মমতাজ আওয়ান

2

আপনার প্রশ্নের কোনও সরল উত্তর নেই কারণ আমরা কেবল জাভাস্ক্রিপ্ট ব্যবহার করে ইমেল প্রেরণ করতে পারি না, তবে জাভাস্ক্রিপ্ট ব্যবহার করার উপায় রয়েছে আমাদের জন্য ইমেল প্রেরণের জন্য:

1) এপিআই ব্যবহার করে জাভাস্ক্রিপ্টের মাধ্যমে এপিআই কল করে আমাদের জন্য ইমেল প্রেরণ করুন, উদাহরণস্বরূপ https://www.emailjs.com বলে যে আপনি কিছু এটিংয়ের পরে নীচে এপিটি কল করতে এই জাতীয় কোড ব্যবহার করতে পারেন:

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/');

যা আপনার ইমেল অ্যাপ্লিকেশনটি খুলবে, এটি আপনার ব্রাউজারে অবরুদ্ধ পপআপে উঠতে পারে।

সাধারণভাবে, ইমেল প্রেরণ করা একটি সার্ভারের কাজ, তাই ব্যাকএন্ড ভাষায়ও করা উচিত, তবে আমরা প্রয়োজনীয় তথ্য সংগ্রহ করতে জাভাস্ক্রিপ্ট ব্যবহার করতে পারি এবং এটি সার্ভার বা এপিআইতে প্রেরণ করতে পারি, তৃতীয় পক্ষের অ্যাপ্লিকেশনটি ব্যবহার করতে এবং সেগুলি খুলতে পারি উপরে বর্ণিত জাভাস্ক্রিপ্ট ব্যবহার করে ব্রাউজারের মাধ্যমে।


5
পুনরায় (1): আমি একটি ছোট্ট ছোট সংস্থাকে আমার এসএমটিপি পাসওয়ার্ড দিতে সত্যিই অনীহা বোধ করব যাতে তারা আমার পাসওয়ার্ডের চেয়ে আরও কিছু বিনিময়ে আমার সার্ভারটি ব্যবহার করে ইমেলগুলি প্রেরণ করতে পারে। আমি তাদের পরিশোধ করছি না। পরিষেবাটি চালু রাখতে / সত্যই আমার শংসাপত্রগুলি রক্ষা করতে / তাদের স্প্যামের জন্য আমার সার্ভারটি ব্যবহার না করার দৃ They় প্রেরনা নেই।
কোয়ান্টিন

0

সংক্ষিপ্ত উত্তরটি হ'ল আপনি এটি কেবল জাভাস্ক্রিপ্ট ব্যবহার করে করতে পারবেন না। এসএমটিপি সার্ভারের সাথে মেলটি প্রেরণ করার জন্য আপনার সংযোগের জন্য একটি সার্ভার-সাইড হ্যান্ডলারের প্রয়োজন ler অনলাইনে অনেকগুলি সহজ মেল স্ক্রিপ্ট রয়েছে যেমন পিএইচপি এর জন্য এটি:

পিএইচপি স্ক্রিপ্টে অনুরোধ প্রেরণের জন্য অ্যাজাক্স ব্যবহার করুন , পরীক্ষা করুন যে প্রয়োজনীয় ক্ষেত্রটি খালি নয় বা জেএস ব্যবহার করে ভুল রয়েছে তা আপনার সার্ভার থেকে পাঠানো মেলের রেকর্ডও রাখে।

function sendMail() is good for doing that.

আপনার স্ক্রিপ্ট থেকে মেল করার সময় যে কোনও ত্রুটি ধরা পড়েছে তা পরীক্ষা করে যথাযথ ব্যবস্থা নিন।
এটির সমাধানের জন্য উদাহরণস্বরূপ যদি মেল ঠিকানাটি ভুল থাকে বা সার্ভার সমস্যার কারণে মেল প্রেরণ না করা হয় বা এটির শর্তে এটির সারি থাকে তবে তা ব্যবহারকারীকে তাত্ক্ষণিকভাবে রিপোর্ট করুন এবং একই ইমেলটি বারবার প্রেরণ করা প্রতিরোধ করবে। আপনার স্ক্রিপ্ট থেকে jQuery GET এবং পোস্ট ব্যবহার করে প্রতিক্রিয়া পান

$ .Get (URL- এ কলব্যাক); $ .Post (URL- এ কলব্যাক);


-1

যেহেতু এগুলি সমস্ত দুর্দান্ত ইনফোজ , জাভাস্ক্রিপ্ট থেকে মেলগুলি প্রেরণের জন্য ম্যানড্রিল নামে কিছুটা এপিআই রয়েছে এবং এটি পুরোপুরি কার্যকর হয়। আপনি এটি একটি শট দিতে পারেন। শুরুর জন্য এখানে একটি টিউটোরিয়াল


-5

জাভাস্ক্রিপ্ট বা 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
এই কোডটি প্রশ্নের উত্তর দেয় কীভাবে দয়া করে তার বিস্তারিত ব্যাখ্যা করুন।
জাল

দেখে মনে হচ্ছে এটি অ্যাক্টিভএক্স ব্যবহার করছে এবং কেবলমাত্র পিসিতে আইই-তে কাজ করে আউটলুক ইনস্টল করাvar objO = new ActiveXObject('Outlook.Application');
চিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.