[๐Ÿ /home ]
hey, i'm rawfeed-jekyll! A raw Jekyll theme for minimalists
rawfeed
rawfeed
rawfeed
rawfeed

Warning: Email form disabled

To use the email submission form, you need to:

1 - Copy the script below and implement it in Google Apps Script:

Note1: Don't forget to put your gmail in the script.

Note2: Without editing the script in Google Apps Script, you need to deploy it again.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
  // IMPORTANT! You must put your gmail email here.
  const TO_ADDRESS = "YOUR EMAIL GMAIL";

  // Get the secret key from the Script Properties
  const RECAPTCHA_SECRET_KEY = PropertiesService.getScriptProperties().getProperty('RECAPTCHA_SECRET_KEY');

  // Function to validate the reCAPTCHA token
  function validateRecaptcha(token) {
    if (!token) {
      throw new Error("Missing reCAPTCHA token.");
    }
    const url = "https://www.google.com/recaptcha/api/siteverify";
    const payload = {
      secret: RECAPTCHA_SECRET_KEY,
      response: token
    };

    const response = UrlFetchApp.fetch(url, {
      method: "post",
      payload: payload
    });

    const result = JSON.parse(response.getContentText());

    if (!result.success) {
      throw new Error("reCAPTCHA verification failed: " + (result['error-codes'] || 'Unknown error.'));
    }

    return true;
  }


  function doPost(e) {
    try {
      const data = JSON.parse(e.postData.contents);

      // 1. Validate the reCAPTCHA token first!
      validateRecaptcha(data['g-recaptcha-response']);

      // 2. If validation passed, continue with the rest of the code
      const { name, email, message } = data;

      if (!name || !email || !message) {
        throw new Error("Missing form data.");
      }

      const subject = "New website message " + name;
      const htmlBody = `
        <p>You have received a new message from your website.:</p><hr>
        <p><b>Name:</b> ${name}</p>
        <p><b>Email:</b> <a href="mailto:${email}">${email}</a></p>
        <p><b>Message:</b></p>
        <p style="white-space: pre-wrap;">${message}</p><hr>
      `;

      MailApp.sendEmail({
        to: TO_ADDRESS,
        subject: subject,
        htmlBody: htmlBody,
        replyTo: email
      });

      return ContentService
        .createTextOutput(JSON.stringify({ 'result': 'success', 'message': 'Message sent!' }))
        .setMimeType(ContentService.MimeType.JSON);

    } catch (err) {
      Logger.log(err.toString());
      return ContentService
        .createTextOutput(JSON.stringify({ 'result': 'error', 'message': err.toString() }))
        .setMimeType(ContentService.MimeType.JSON);
    }
  }
  

2 - Create a reCaptcha on Google and add the reCaptcha PRIVATE key to the Google Apps Script script property.

3 - Copy the reCaptcha PUBLIC key and the Google Apps Script URL and place them in _config.yml:

1
2
3
4
5
6
7
8
  google:
    ###
    ###
    apps_script:
      url: "https://script.google.com/macros/s/BuD..."
    recaptcha:
      pubkey: "8Lci194rAAAAA70Sv..."