1

我正在使用內置api作爲Google Spreadsheets的腳本來發送預訂確認信息,如果有人填寫了無效的電子郵件,我的腳本就會中斷。我希望它能將一些數據保存到未通知的客人列表中,然後循環完成預訂。檢查電子郵件在Google Apps腳本中是否有效

這是我當前的代碼(簡化):

// 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) 

按照documentationMailApp類中只有兩個方法是發送電子郵件,檢查每日配額 - 沒有什麼有關檢查有效的電子郵件地址 - 所以我不知道爲了接受請求必須滿足什麼標準,因此不能寫驗證例程。

+1

正則表達式如何使用簡單的電子郵件驗證的正則表達式? \ b [A-Z0-9 ._% - ] + @ [A-Z0-9 .-] + \。[AZ] {2,4} \ b – rkg 2010-10-24 16:25:31

+0

@Ravi:我可以做那樣的事情, API調用會在一個無效地址中斷,我非常想知道電子​​郵件必須滿足什麼標準,並且能夠事先驗證... – 2010-10-29 17:29:42

+0

嗯..所以sendEmail會拋出一些特定的異常,如果它的一個不合規電郵? – rkg 2010-10-29 19:57:23

回答

-1

保持冷靜,抓住和記錄異常,並進行:

try { 
    // do stuff, including send email 
    MailApp.sendEmail(email, subject, msg) 
} catch(e) { 
    Logger.log("Error with email (" + email + "). " + e); 
} 
+0

這個問題現在已經老了 - 我需要用該應用程序發送的所有電子郵件都已發送。但如果我必須再次這樣做,這絕對是我將如何做到的。 – 2012-05-18 14:15:19

+0

我認爲你不能指定在JavaScript中捕獲的異常類型 – CaptainNemo 2014-12-20 18:04:20

+0

這是什麼樣的異常?如果您發送太多電子郵件給無效的電子郵件,您將被禁止。 – User 2017-04-27 05:24:48

3

如果您需要事先確認電子郵件地址,請在您的驅動器空白電子表格。然後,運行下面的函數,將testSheet變量指向您創建的電子表格。該函數將執行一個簡單的正則表達式測試來捕獲格式不正確的地址,然後通過嘗試臨時將其添加爲電子表格中的查看器來檢查地址是否確實有效。如果地址可以添加,它必須是有效的。

function validateEmail(email) { 
    var re = /\[email protected]\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; 
    } 
} 

How to validate email address in JavaScript?

相關問題