#cs ----------------------------------------------------------------------------

AutoIt Version: 3.3.6.1
Author: H. Tsubota

Script Function:
    Googleニュースを定時巡回して見出しとリンク先をメールで送付する。
    アプリケーション自体はトレイに格納。
    注: GmailをSMTPサーバーとして使用する場合、
    Gmailの設定でPOPを有効にしておく必要がある。
    参照: http://mail.google.com/support/bin/answer.py?hl=ja&answer=13287
#ce ----------------------------------------------------------------------------
#include <IE.au3>
#include <Date.au3>

Opt("TrayOnEventMode",1)
Opt("TrayMenuMode",1) ; デフォルトのトレイメニューアイテム(スクリプト 停止/終了)を非表示

$iMilliseconds = 15 * 60 *1000 ; 15分に一回処理をおこなう
Global $oIE = _IECreate ("about:blank", 0, 0, 1, 0)
MakeTrayMenu()
While True
    $sNews = GetNews( $oIE )
    $tCur = _Date_Time_GetLocalTime()
    SendMail( _
        "smtp.gmail.com", _
        _Date_Time_SystemTimeToDateTimeStr($tCur), _
        '"WhiteGoat" <WhiteGoat@gmail.com>', _
        "BlackGoat@i.softbank.jp", _
        $sNews, _
        1, _
        "WhiteGoat@gmail.com", _
        "YourPassword", _
        587 _
    )
    Sleep ($iMilliseconds)
WEnd

; トレイメニューを作成
Func MakeTrayMenu()
    TraySetClick(1) ; 左クリックでトレイメニュー表示
    TrayCreateItem("巡回を終了")
    TrayItemSetOnEvent(-1,"ExitScript")
    TraySetState()
EndFunc

;終了処理
Func ExitScript()
    ; IEを終了
    Global $oIE
    _IEQuit($oIE)
    Exit
EndFunc

; GoogleNewsのトップから見出しとリンク先URLを取得
Func GetNews( $oIE )
    _IENavigate($oIE, "http://news.google.co.jp/news")
    Local $oTop = _IEGetObjById ($oIE, "top-stories")
    Local $cArticles = _IETagNameGetCollection ( $oTop, "h2")
    Local $sNews = ""
    For $oArticle In $cArticles
        $oLink = _IETagNameGetCollection ( $oArticle, "a",0)
        $sNews &= $oArticle.innerText & ":" & @CRLF
        $sNews &= $oLink.href & @CRLF
    Next
    Return $sNews
EndFunc

; SMTPサーバー経由でメールを送信
Func SendMail( _
    $sSMTPServer, _
    $sSubject, _
    $sFrom, _
    $sTo, _
    $sMessage, _
    $iAuthenticate = 0 , _ ;0: None, 1:basic (clear-text) , 2: NTLM
    $sUserName = "" , _
    $sPassword = "" , _
    $iPort = 25 )
    $oMessage = ObjCreate("CDO.Message")
    $oMessage.Subject = $sSubject
    $oMessage.From = $sFrom
    $oMessage.To = $sTo
    $oMessage.TextBody = $sMessage
    
    $oMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    $oMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $sSMTPServer
    $oMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = $iAuthenticate
    $oMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $sUserName
    $oMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $sPassword
    $oMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $iPort
    $oMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
    $oMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10
    $oMessage.Configuration.Fields.Update
    $oMessage.Send
EndFunc

Blog <実験記録 No.02>.