2011-02-23 49 views
0

我得到'变量是未定义的',我猜这与vbscript中的变量范围有关,但我的知识限于此。VB脚本 - 未定义的变量

我知道加载的电子邮件地址的作品和实际的电子邮件,因为我已经单独检查这些。我试图通过一个电子邮件地址列表循环,并将日志文件发送到每个..

任何额外的信息将是伟大的!

首先,有一个变种阵列在文件的顶部:

dim emails() 

function getEmailAddresses() 

    dim objFSO 
    dim objConfigFile 
    dim strLine 
    dim iCounter 

    const ForReading = 1, ForWriting = 2, ForAppending = 8 

    set objFSO = createobject("Scripting.FileSystemObject") 
    set objConfigFile = objFSO.OpenTextFile("emailAddresses.config", ForReading) 

    iCounter = 0 

    do while not objConfigFile.AtEndOfStream 
     redim preserve emails(iCounter) 
     strLine = trim(objConfigFile.ReadLine) 
     emails(iCounter) = strLine 
     iCounter = iCounter + 1 
    loop 

    objConfigFile.Close 

end function 

function writetolog(strLogtext) 
    dim objFSO 
    dim objLogfile 

    const ForReading = 1, ForWriting = 2, ForAppending = 8 

    set objFSO = createobject("Scripting.FileSystemObject") 
    set objLogfile = objFSO.OpenTextFile("xxx.log", ForAppending, true) 
    objLogfile.Writeline now() & " - " & strLogText 
    objLogfile.Close 

    call EmailLogFile(strLogText) 

end function 


function EmailLogFile(bodyText) 

    for each emailAddress in emails 

     set objEmail = CreateObject("CDO.Message") 
     objEmail.From = "[email protected]" 

     objEmail.To = emailAddress 
     objEmail.Subject = "File Move Log" 
     objEmail.Textbody = bodyText 
     objEmail.Configuration.Fields.Item _ 
      ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
     objEmail.Configuration.Fields.Item _ 
      ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _ 
     "xxxxxx" 
     objEmail.Configuration.Fields.Item _ 
      ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
     objEmail.Configuration.Fields.Update 
     objEmail.Send 

    next 
end function 
+2

你忘了把'选项Explicit'声明在顶部你的代码。 **总是**,总是写入VBScript并打开Option Explicit。 – 2011-02-23 14:15:29

回答

0

它看起来并不像你打电话getEmailAddresses()任何地方,你的文件也不会被读取,你的emails阵列将不会填充

0

什么线是未定义的VAR在哪里?或者什么是var名字?

无论哪种方式,'strLogText'没有在任何地方定义。另外,如果这是一个传统的ASP页面,则在顶部放置一个Option Explicit语句。

+0

噢,未定义的变量是在电子邮件地址'emailAddresses'的循环中 – nik0lias 2011-02-23 14:04:27

+0

只需将'Dim emailAddresses'放在循环线之上,是否解决了这个问题? – 2011-02-23 14:06:40

+0

不怕,但这是循环变量,所以它怀疑它不会? – nik0lias 2011-02-23 14:08:52