0% found this document useful (0 votes)
10 views6 pages

Another

Uploaded by

April Killase
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views6 pages

Another

Uploaded by

April Killase
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 6

<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... */
}

You can't send an email directly with javascript.

You can, however, open the user's mail client:

window.open('mailto:[email protected]');

There are also some parameters to pre-fill the subject and the body:

window.open('mailto:[email protected]?subject=subject&body=body');

Your server can call the 3rd Party API after proper authentication and
authorization. The API Keys are not exposed to client.

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: '[email protected]',
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 );

});

and then use use $.ajax on client to call your email API.
Indirect via Your Server - Calling 3rd Party API - secure and recommended

Your server can call the 3rd Party API after proper authentication and
authorization. The API Keys are not exposed to client.

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: '[email protected]',
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 );

});

and then use use $.ajax on client to call your email API.

Directly From Client - Calling 3rd Party API - not recomended

Send an email using only JavaScript

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

Like this -

function sendMail() {
$.ajax({
type: 'POST',
url: 'https://mandrillapp.com/api/1.0/messages/send.json',
data: {
'key': 'YOUR API KEY HERE',
'message': {
'from_email': '[email protected]',
'to': [
{
'email': '[email protected]',
'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
});
}

You can find what to put inside the JavaScript function in this post.

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

I put together a simple free service that allows you to make a standard HTTP POST
request to send an email. It's called PostMail, and you can simply post a form, use
Javascript or jQuery. When you sign up, it provides you with code that you can copy
& paste into your website. Here are some examples:

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>

4
down vote

window.open('mailto:[email protected]'); as above does nothing to hide the


"[email protected]" email address from being harvested by spambots. I used to
constantly run into this problem.

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

You might also like