Проверка, если адрес электронной почты действителен в скрипте Apps Google
-
25-09-2019 - |
Вопрос
Я использую встроенные API для сценариев против Google Cleanshies, чтобы отправить некоторые подтверждения бронирования, и в настоящее время мой скрипт ломается, если кто-то заполнил недопустимый адрес электронной почты. Я хотел бы просто сохранить некоторые данные в список гостей, которые не были уведомлены, а затем приступить к цитатам по бронированию.
Это мой текущий код (упрощенный):
// The variables email, subject and msg are populated.
// I've tested that using Browser.msgBox(), and the correct column values are
// found and used
// The script breaks here, if an incorrect email address has been filled in
MailApp.sendEmail(email, subject, msg)
Согласно документация Единственные два метода на MailApp
Класс должны отправлять электронные письма и проверить ежедневную квоту - ничего о проверке действительных адресов электронной почты - поэтому я на самом деле не знаю, какие критерии должны быть выполнены для класса, чтобы принять запрос, и, следовательно, не может написать процедуру проверки.
Решение
Будьте спокойны, поймать и воспользуйтесь исключением и продолжим:
try {
// do stuff, including send email
MailApp.sendEmail(email, subject, msg)
} catch(e) {
Logger.log("Error with email (" + email + "). " + e);
}
Другие советы
Если вам нужно заранее подтвердить адреса электронной почты, создайте пустую электронную таблицу в своем диске. Затем запустите функцию ниже, изменив TestSheet. Переменная указывать на созданную вами электронную таблицу. Функция выполнит простой тест Regeex, чтобы поймать неправильные адреса, а затем проверьте, действительно ли адрес действительно, пытаясь временно добавить его в виде просмотра на электронную таблицу. Если адрес может быть добавлен, он должен быть действительным.
function validateEmail(email) {
var re = /\S+@\S+\.\S+/;
if (!re.test(email)) {
return false;
} else {
var testSheet = SpreadsheetApp.openById(arbitrarySpreadsheetInYourDrive);
try {
testSheet.addViewer(email);
} catch(e) {
return false;
}
testSheet.removeViewer(email);
return true;
}
}
Regex от Как проверить адрес электронной почты в JavaScript?