技术咨询:能否用Google Apps Script发送指定来源HTML邮件并读取TXT收件人
使用Google Apps Script发送HTML邮件(从本地/网站取内容,TXT文件取收件人)
当然可以实现这个需求!既然你已经用PHPMailer搞定了,转成Google Apps Script其实也不难,我来给你一步步说明怎么操作:
1. 准备工作
- 把存储收件人的TXT文件上传到你的Google Drive(如果是本地文件的话),建议TXT格式用每行一个邮箱地址,或者用逗号/分号分隔;
- 如果是从自己的网站获取HTML内容,确保该页面可以公开访问(若需登录验证,后续要额外配置请求头);
- 如果是本地HTML文件,同样上传到Google Drive。
2. 读取收件人TXT文件内容
先从Google Drive读取TXT内容,解析成收件人邮箱数组:
function getRecipientsFromTXT() { // 替换成你的TXT文件名或文件ID const txtFile = DriveApp.getFilesByName("recipients.txt").next(); const content = txtFile.getBlob().getDataAsString(); // 按行分割并过滤空字符串 const recipients = content.split("\n").filter(email => email.trim() !== ""); return recipients; }
提示:如果你的TXT是逗号分隔邮箱,把
split("\n")改成split(",")即可。
3. 获取HTML邮件内容
情况一:从你的网站获取HTML内容
用UrlFetchApp直接请求网页内容:
function getHtmlFromWebsite() { const url = "https://www.abc.tld/htmlbody.html"; const response = UrlFetchApp.fetch(url); return response.getContentText(); }
注意:如果网站需要登录,可在
fetch方法里添加headers参数携带认证信息。
情况二:从Google Drive的本地HTML文件获取
function getHtmlFromDriveFile() { // 替换成你的HTML文件名或文件ID const htmlFile = DriveApp.getFilesByName("email-body.html").next(); return htmlFile.getBlob().getDataAsString(); }
4. 发送HTML邮件
把上面的功能整合,循环发送邮件(注意谷歌的邮件发送限额):
function sendHtmlEmails() { const recipients = getRecipientsFromTXT(); // 二选一:从网站取HTML 或 从Drive文件取HTML const htmlBody = getHtmlFromWebsite(); // const htmlBody = getHtmlFromDriveFile(); const subject = "你的邮件主题"; // 纯文本备用(适配不支持HTML的邮箱) const plainTextBody = "请使用支持HTML的邮箱查看此邮件内容"; recipients.forEach(recipient => { try { MailApp.sendEmail({ to: recipient.trim(), subject: subject, body: plainTextBody, htmlBody: htmlBody }); console.log(`邮件已发送至 ${recipient}`); } catch (error) { console.error(`发送邮件至 ${recipient} 失败: ${error.message}`); } }); }
关键说明
- 和PHPMailer不同,Google Apps Script里的
MailApp默认使用谷歌OAuth认证,第一次运行脚本时授权邮件权限后,无需额外配置clientId和clientSecret; - 免费版谷歌账号每天最多发送100封邮件,Workspace账号限额更高,注意不要超出;
- 确保Drive里的文件是你所有,或已给脚本授予读取权限(共享文件可设置为“任何人可查看”)。
内容的提问来源于stack exchange,提问作者Andre 'Jors' G
相关产品推荐
相关产品推荐

