Сценарий приложений не отправляет электронное письмо, содержащее ссылки на файлы Google Диска в данном домене G Suite, нет сообщений об ошибке - PullRequest
1 голос
/ 10 июля 2020

Контекст

В настоящее время мы работаем над коротким скриптом приложений, который отправляет ссылки на файлы 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? Какие еще моменты я должен проверить, чтобы он работал?

Подробнее о проблеме:

  1. Сценарий не может отправлять электронную почту как с G Suite, так и с gmail, а также с другими адресами электронной почты.
  2. Мы пробовали использовать оба сценария приложений (V8 и наследие). Оба не работают должным образом.
  3. Я считаю, что SPF / DKIM / DMAR C не настроены в домене.
  4. Мы используем одних и тех же тестовых получателей в обеих средах G Suite.
  5. Код после вызова метода sendEmail выполняется правильно.
  6. Предоставленный шаблон был просто примером для воспроизведения проблемы. Настоящий шаблон выглядит как обычное письмо со списком ссылок. Это не только ссылка.
  7. В будущем предполагается, что сценарий будет отправлять менее 100 писем в день. Прямо сейчас он просто отправляет несколько тестовых писем (не более, чем в тестовой среде).
  8. Мы используем облачный проект по умолчанию, связанный со скриптом.
  9. Скрипт привязан к Google Файл Таблиц.
  10. Ниже представлен реальный шаблон, который мы используем.
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.

1 Ответ

1 голос
/ 10 июля 2020

Вместо MailApp используйте GmailApp (возможно, вам придется изменить параметры sendEmail, проверьте документацию)

Вышеупомянутое, потому что другие сообщали о подобных проблемах, на самом деле нечто подобное случилось недавно со мной, когда я работал над клиентским проектом .

Связанные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...