2016-06-20 10 views
0

ユーザーがフォルダにファイルをアップロードするときに、すぐにすべてのユーザーに電子メールを送信する必要があります。既存のコードは次のように動作します。タスクスケジューラは毎日午前11時に実行され、ファイルは変更された日付をフィルタリングします。私の目的は、ユーザーがファイルをアップロードしたときに電子メールを送信することですが、スケジューラを1時間または5分ごとに実行することはできません。以下のフォルダにコードがありますので、誰でもすぐにコードを更新して受信できるようにしてください。ファイルをアップロードするとすぐにメールを送信する方法

Dim objFso 
Set objFso = CreateObject("Scripting.FileSystemObject") 

Dim strPath, yr, mnt 
yr = CStr(Year(Now)) 
mnt = CStr(Month(Now)) 
strPath = "c:\\users\upload files\email " + yr 

Dim strContent 
strContent = "" 
Set objFolder = objFso.GetFolder(strPath) 

For Each objFile In objFolder.Files 
    If objFso.GetExtensionName (objFile.Path) = "pdf" Then 
     If objFile.DateLastModified > dateadd("hr", -24, Now) Then 
      strContent = strContent + "<li>" + _ 
       "<a href=""C://Users/uploadfiles/email/" + yr + "/" + _ 
       objFile.Name + """>" + objFile.Name + "</a></li>" 
      MsgBox(strContent) 
     End If 
    End If 
+0

あなたのコードは不完全であり、電子メールを送信しようとしません。 SOにはVBScriptからメールを送信するための多くの例があります。まずは自分で試してみてください。私たちはあなたのためにあなたの仕事をするためにここにいません。 –

+0

こんにちは@AnsgarWiechers電子メールを送信するためのコードがあります。私はちょうどユーザーアップロード時にflesをすぐに選びたい – sai

答えて

1
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _ 
("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE Targetinstance ISA 'CIM_DirectoryContainsFile' and TargetInstance.GroupComponent= 'Win32_Directory.Name=""c:\\\\scripts""'") 
Do 
    Set objLatestEvent = colMonitoredEvents.NextEvent 
    Wscript.Echo objLatestEvent.TargetInstance.PartComponent 
Loop 

これは、cを監視:スクリプト\ごとに10秒(within 10)を作成中のファイルに対して(ノートバックスラッシュは再び倍増倍にする必要があります)。

Set emailObj  = CreateObject("CDO.Message") 
emailObj.From  = "[email protected]" 

emailObj.To  = "[email protected]" 

emailObj.Subject = "Test CDO" 
emailObj.TextBody = "Test CDO" 

emailObj.AddAttachment "c:\windows\win.ini" 

Set emailConfig = emailObj.Configuration 

emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" 
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl")  = true 
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "Username" 
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Password" 
emailConfig.Fields.Update 

emailObj.Send 

If err.number = 0 then Msgbox "Done" 
+0

こんにちは、ここで偽装が必要な理由を教えてください。それは自動で実行されるか、手動で実行する必要がありますか? – sai

+0

偽装は省略可能なので、省略することができます。これは、セキュリティ権限を持って行動することを意味します。 –

+0

あなたを偽装するか、匿名の2つの選択肢があります。ほとんど何も匿名として動作しません。 WMIは既に実行されているため、独自のセキュリティコンテキストを使用できます(使用できません)。それはあなたを偽装するので、あなたができることをすることができます。 –

関連する問題