Контекст
В настоящее время мы работаем над коротким скриптом приложений, который отправляет ссылки на файлы Google Диска (общие для всех, у кого есть ссылка) с помощью функции MailApp.sendEmail(options)
.
Скрипт хорошо работает в нашем тестовом домене G Suite, но в рабочем домене он просто не отправляет электронные письма. Сообщения об ошибках отсутствуют.
Некоторый код
Проблема может быть воспроизведена с помощью следующих фрагментов кода:
Code.gs файл
function test_sendEmail() {
const template = HtmlService.createTemplateFromFile('template.html');
template.link = "https://drive.google.com";
template.title = "This is a link";
const mailBody = template.evaluate().getContent();
console.log("Quota: " + MailApp.getRemainingDailyQuota()); /* Quota is not exceeded. */
try {
const options = {
to: "myEmail@Address.com", /* Replace this with your email address */
subject: "LINK",
htmlBody: mailBody,
noReply: true
};
MailApp.sendEmail(options);
} catch(e) {
console.log(e.message);
}
}
шаблон. html файл
Link: <a href='<?= link ?>'><?= title ?></a>
Что мы пробовали
Электронные письма отправляются правильно, если ссылка не содержит части drive.google.com
. Например, электронные письма со ссылками на google.com
отправляются правильно.
Мы можем отправить электронное письмо из учетной записи Gmail, в которой выполняется сценарий, и это электронное письмо отправляется правильно со ссылками на Диск.
В отличие от этого вопроса , я не получаю электронное письмо «Сообщение заблокировано» и использование GmailApp.sendEmail
вместо MailApp.sendEmail
ничего не меняет.
Наконец, приведенный выше сценарий хорошо работает в тестовых доменах G Suite и в некоторых других, которые мы пробовали.
Таким образом, я считаю, что он исходит из конфигурации домена G Suite, в которой указаны c ограничения на скрипт приложений. Является ли это возможным? Где я могу изменить это в консоли администратора G Suite? Какие еще моменты я должен проверить, чтобы он работал?
Подробнее о проблеме:
- Сценарий не может отправлять электронную почту как с G Suite, так и с gmail, а также с другими адресами электронной почты.
- Мы пробовали использовать оба сценария приложений (V8 и наследие). Оба не работают должным образом.
- Я считаю, что SPF / DKIM / DMAR C не настроены в домене.
- Мы используем одних и тех же тестовых получателей в обеих средах G Suite.
- Код после вызова метода
sendEmail
выполняется правильно. - Предоставленный шаблон был просто примером для воспроизведения проблемы. Настоящий шаблон выглядит как обычное письмо со списком ссылок. Это не только ссылка.
- В будущем предполагается, что сценарий будет отправлять менее 100 писем в день. Прямо сейчас он просто отправляет несколько тестовых писем (не более, чем в тестовой среде).
- Мы используем облачный проект по умолчанию, связанный со скриптом.
- Скрипт привязан к Google Файл Таблиц.
- Ниже представлен реальный шаблон, который мы используем.
Dear Customers,<br/><br/>
We inform you that new documents are available. Please find them below:
<ul>
<? for(let i = 0; i < docs.length; i++) { ?>
<li>Document <a href='<?= docs[i].link ?>'><?= docs[i].title ?></a>, <i><?= docs[i].documentType ?></i> is available</li>
<? } ?>
</ul>
<br/>
Regards,<br/>
Your customer service.