You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 06:55:23