Invia email senza server utilizzando lo script di google: errore dopo aver fatto clic sul pulsante di invio

Voglio inviare un’email a una località [email protected] utilizzando lo script di google. Sto seguendo questo – https://github.com/dwyl/html-form-send-email-via-google-script-without-server per configurare l’intera funzionalità nel mio sito web.

C’è un modulo html nel mio sito Web e desidero inviare e-mail ogni volta che qualcuno fa clic sul pulsante di invio sul mio sito

ecco l’html della forma –

Ecco il file script.g che funziona bene –

 var TO_ADDRESS = "[email protected]"; // where to send form data function doPost(e) { try { Logger.log(e); // the Google Script version of console.log see: Class Logger MailApp.sendEmail(TO_ADDRESS, "Contact Form Submitted", JSON.stringify(e.parameters)); // return json success results return ContentService .createTextOutput( JSON.stringify({"result":"success", "data": JSON.stringify(e.parameters) })) .setMimeType(ContentService.MimeType.JSON); } catch(error) { // if error return this Logger.log(error); return ContentService .createTextOutput(JSON.stringify({"result":"error", "error": e})) .setMimeType(ContentService.MimeType.JSON); } } 

Volevo modellare l’object JSON che viene passato così quando utilizzo il seguente script:

 // if you want to store your email server-side (hidden), uncomment the next line var TO_ADDRESS = "[email protected]"; // spit out all the keys/values from the form in HTML for email function formatMailBody(obj, order) { var result = ""; // loop over all keys in the ordered form data for (var idx in order) { var key = order[idx]; result += "

" + key + "

" + obj[key] + "
"; // for every key, concatenate an `

`/`
` pairing of the key name and its value, // and append it to the `result` string created at the start. } return result; // once the looping is done, `result` will be one long string to put in the email body } function doPost(e) { try { Logger.log(e); // the Google Script version of console.log see: Class Logger record_data(e); // shorter name for form data var mailData = e.parameters; // names and order of form elements var dataOrder = JSON.parse(e.parameters.formDataNameOrder); // determine recepient of the email // if you have your email uncommented above, it uses that `TO_ADDRESS` // otherwise, it defaults to the email provided by the form's data attribute var sendEmailTo = (typeof TO_ADDRESS !== "undefined") ? TO_ADDRESS : mailData.formGoogleSendEmail; MailApp.sendEmail({ to: String(sendEmailTo), subject: "Contact form submitted", // replyTo: String(mailData.email), // This is optional and reliant on your form actually collecting a field named `email` htmlBody: formatMailBody(mailData, dataOrder) }); return ContentService // return json success results .createTextOutput( JSON.stringify({"result":"success", "data": JSON.stringify(e.parameters) })) .setMimeType(ContentService.MimeType.JSON); } catch(error) { // if error return this Logger.log(error); return ContentService .createTextOutput(JSON.stringify({"result":"error", "error": e})) .setMimeType(ContentService.MimeType.JSON); } }

Ho ricevuto questo errore

 {"result":"error","error":{"parameter":{"subject":"subj", "name":"shan","message":"msg","email":"[email protected]","phone-num":"46546"}, "contextPath":"","contentLength":64,"queryString":"","parameters": {"subject":["subj"],"name":["shan"],"message":["msg"],"email":["[email protected]"], "phone-num":["46546"]},"postData":{"type":"application/x-www-form-urlencoded", "length":64,"contents":"name=shan&email=sh%40sh&phone-num=46546&subject=subj&message=msg", "name":"postData"}}} 

Succede solo con il secondo script. Dove sto andando male?