2

Outlookは、30分ごとにリアルタイムでサーバーに電子メールを送信したいと考えています。この現在のコードまたはバッチファイルを介してそれを行う方法はありますか?スケジュールされたタスクを作成することはできず、サードパーティのソフトウェアはありません

set objOutlook = CreateObject( "Outlook.Application" )
set objMail = objOutlook.CreateItem(0)

strMessage = "Test"

ON ERROR RESUME NEXT
With objMail
    .From = "email"
    .To = "email"
    .Subject = "Test"
    .Body = strMessage
    .Save
end with

objMail.OriginatorDeliveryReportRequested = True
objMail.Display
objMail.Send

WScript.quit
4

2 に答える 2

4

VBScriptでスリープする例:

Dim waittime : waittime = 30 * 60 * 1000    

do 

    ' Insert your code here

    WScript.Sleep(waittime)
loop

ああ、WScript.Quitステートメントを削除すると、スクリプトが終了します。

編集

それを実行してメッセージボックスを統合する別の方法は、 WshShell.Popup:を使用することです。

do

    ' Insert your code here

    Set WshShell = CreateObject("WScript.Shell")
    If WshShell.Popup ( "Sending a mail every 30 minutes" & vbNewLine & _
                        "Press Cancel to stop or OK to send a mail right now.", _
                            waittime, "Automatic mail sender", 1 or 32 or 4096) = 2  Then
        exit do
    end if

loop

このスニペットはコードを毎回実行し、waittime[キャンセル]ボタンを押すと停止し、を押すとすぐにコードを実行しますOK

于 2012-11-06T13:40:52.860 に答える
2

vbsでwhiletrueループを使用するか(推奨)、バッチファイルでループを使用します(ダーティウェイ)。

:back
myscript.vbs
ping -n 1800 localhost >nul 2>nul 
REM ping -n is a dirty way of sleeping for system <= winxp
REM for win7+ systems, use command `timeout 1800`
goto back

Wscriptアプローチ:

while true
    set objOutlook = CreateObject( "Outlook.Application" )
    set objMail = objOutlook.CreateItem(0)

    strMessage = "Test"

    ON ERROR RESUME NEXT
    With objMail
        .From = "email"
        .To = "email"
        .Subject = "Test"
        .Body = strMessage
        .Save
    end with

    objMail.OriginatorDeliveryReportRequested = True
    objMail.Display
    objMail.Send
    wscript.sleep(30*60*1000)
wend
于 2012-11-06T13:24:51.343 に答える