如何通过BlueHost邮箱在Google表单提交时发送确认邮件?
替换Google表单邮件发送渠道为BlueHost企业邮箱的脚本修改方案
需求背景
原脚本通过Google表单绑定的Gmail账号发送预订确认邮件,日限100封无法满足需求。现需更换为BlueHost CHOICE PLUS服务提供的企业邮箱info@mycompanyname.com(每小时限150封)。
修改步骤及代码
1. 准备BlueHost邮箱SMTP配置
先确认你的BlueHost企业邮箱SMTP核心参数:
- SMTP服务器:
mail.mycompanyname.com(BlueHost默认SMTP服务器) - 端口:465(SSL加密)
- 用户名:
info@mycompanyname.com - 密码:你的BlueHost邮箱登录密码(若开启两步验证,需使用应用专用密码)
2. 修改Google Apps Script代码
保留原脚本的表单数据处理、HTML模板渲染逻辑,仅替换邮件发送部分为SMTP发送逻辑:
function sendBookingConfirmationEmail(e) { // 原有数据处理与模板渲染逻辑不变 var html = HtmlService.createTemplateFromFile("confirmationEmail.html"); var emailTo = e.response.getRespondentEmail(); var bookingParameters = e.response.getItemResponses(); var bookingName = bookingParameters[0].getResponse(); var numberOfTele = bookingParameters[1].getResponse(); var numberOfKids = bookingParameters[2].getResponse(); var numberOfAdults = bookingParameters[3].getResponse(); var scheduledSlot = bookingParameters[4].getResponse(); html.numberOfKids = numberOfKids; html.numberOfAdults = numberOfAdults; html.numberOfTele = numberOfTele; html.scheduledSlot = scheduledSlot; var htmlText = html.evaluate().getContent(); var emailSubject = "BOOKING CONFIRMATION"; // 纯文本备用内容(适配不支持HTML的邮箱) var plainTextBody = `您的预订已确认:儿童${numberOfKids}位,成人${numberOfAdults}位,时段${scheduledSlot}`; if (emailTo !== undefined) { // 替换为SMTP发送逻辑 sendEmailViaSMTP(emailTo, emailSubject, plainTextBody, htmlText); } } // 新增SMTP发送函数 function sendEmailViaSMTP(to, subject, textBody, htmlBody) { var smtpConfig = { host: "mail.mycompanyname.com", port: 465, username: "info@mycompanyname.com", password: "你的BlueHost邮箱密码/应用专用密码" // 替换为实际密码 }; // 构造符合SMTP规范的邮件内容 var rawMessage = [ `From: ${smtpConfig.username}`, `To: ${to}`, `Subject: ${subject}`, "MIME-Version: 1.0", 'Content-Type: multipart/alternative; boundary="boundary_001"', "", "--boundary_001", "Content-Type: text/plain; charset=utf-8", "", textBody, "", "--boundary_001", "Content-Type: text/html; charset=utf-8", "", htmlBody, "", "--boundary_001--" ].join("\n"); // 编码邮件内容 var encodedMessage = Utilities.base64Encode(rawMessage, Utilities.Charset.UTF_8); encodedMessage = encodedMessage.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''); // 发送请求到SMTP服务器 var url = `https://${smtpConfig.host}:${smtpConfig.port}/smtp/send`; var options = { method: "post", headers: { "Authorization": "Basic " + Utilities.base64Encode(`${smtpConfig.username}:${smtpConfig.password}`) }, payload: { to: to, message: encodedMessage }, muteHttpExceptions: true }; var response = UrlFetchApp.fetch(url, options); Logger.log("SMTP发送结果: " + response.getContentText()); }
3. 保留原HTML模板
原confirmationEmail.html文件无需修改,可继续使用(若需优化中文表述可调整):
<!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> <p><?= numberOfKids ?>位儿童,<?= numberOfAdults ?>位成人,您的预订已确认。</p> <p>预订时段:<?= scheduledSlot ?></p> <p>Best Regards<br> Team</p> </body> </html>
注意事项
- 必须将
sendEmailViaSMTP函数中的password替换为你的BlueHost邮箱实际密码或应用专用密码 - 若使用端口587(TLS加密),需将请求地址改为
tls://${smtpConfig.host}:${smtpConfig.port}并调整对应配置 - 测试时可通过Google Apps Script的日志查看发送状态,排查可能的配置错误
内容的提问来源于stack exchange,提问作者Gaspar Lam
相关产品推荐
相关产品推荐

