Skip to content

Instantly share code, notes, and snippets.

@gokaybiz
Created July 16, 2017 08:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gokaybiz/2326d35d23e187d0d5b0466e665c1d3f to your computer and use it in GitHub Desktop.
Save gokaybiz/2326d35d23e187d0d5b0466e665c1d3f to your computer and use it in GitHub Desktop.
Contact form with Google Scripts
var secret = '<recaptcha_secret>';
var tomail = '<mail>@gmail.com';
function doGet(e) {
return ContentService.createTextOutput('Hayirdir?');
}
function doPost(e) {
var captchakey = (e.parameters.captcha) || "";
var name = (e.parameters.name) || "";
var email = (e.parameters.email) || "";
var message = (e.parameters.message) || "";
var form_gonder = (e.parameters.formgonder) || "";
var returnval = "ok";
captchakey = captchakey.toString();
name = name.toString();
email = email.toString();
message = message.toString();
form_gonder = form_gonder.toString();
if (form_gonder != "1" || isBlank(captchakey) || isBlank(name) || isBlank(email) || isBlank(message))
returnval = "bos_alan_var";
if (returnval == "ok")
if (verifyCaptcha(captchakey)) {
MailApp.sendEmail({
to: tomail,
subject: "gokay.biz iletisim!",
replyTo: getTextFromHtml(email),
htmlBody: "<h4 style='text-transform: capitalize; margin-bottom: 0'>İsim: </h4>" + "<div>" + getTextFromHtml(name) + "</div>" + "<h4 style='text-transform: capitalize; margin-bottom: 0'>Mail: </h4>" + "<div>" + getTextFromHtml(email) + "</div>" + "<h4 style='text-transform: capitalize; margin-bottom: 0'>Mesaj: </h4>" + "<div>" + getTextFromHtml(message) + "</div>"
});
returnval = "ok||" + name;
} else
returnval = "captcha";
return ContentService.createTextOutput(returnval);
}
function isBlank(str) {
return (!str || /^\s*$/.test(str));
}
function getTextFromHtml(html) {
return getTextFromNode(Xml.parse(html, true).getElement());
}
function getTextFromNode(x) {
switch (x.toString()) {
case 'XmlText':
return x.toXmlString();
case 'XmlElement':
return x.getNodes().map(getTextFromNode).join('');
default:
return '';
}
}
function verifyCaptcha(gRecaptchaResponse) {
var payload = {
'secret': secret,
'response': gRecaptchaResponse
}
var url = 'https://www.google.com/recaptcha/api/siteverify';
var resp = UrlFetchApp.fetch(url, {
payload: payload,
method: 'POST'
}).getContentText();
return JSON.parse(resp).success;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment