Automatische Benachrichtigung bei Emails in meinem Blog

Mein Vorhaben, die ankommenden Emails per IMAP-Interface für PHP auszulesen, habe ich aus Gründen der Sicherheit aufgegeben. Stattdessen bekomme ich in meinem BibaBlog nun mittels VBA, Outlook 2003, Redemption (ein Plugin für Outlook, dass die Sicherheitseinstellungen umgeht, die mit Outlook 2003 eingeführt wurden) und HTTP die Benachrichtung über eingegangen Mails.

Als erstes muss die Redemption-Library von http://www.dimastr.com/redemption/ installiert werden. Einfach den Installer im ZIP-Archiv starten.

Danach muss in Outlook 2003 der VBA-Editor mit Hilfe von Alt+F11 bzw. Extras>Makro>Visual Basic-Editor aufgerufen werden.

Nun kommt der VBA-Code hinein:

Public m_SafeChar(0 To 255) As Boolean

' Liefert den übergebenen String als URL-Encoded zurück
Public Function URLEncode(ByVal txt As String) As String
Dim i As Integer
Dim ch As String
Dim ch_asc As Integer
Dim result As String

    SetSafeChars

    result = ""
    For i = 1 To Len(txt)
        ch = Mid$(txt, i, 1)
        ch_asc = Asc(ch)
        If ch_asc = vbKeySpace Then
            result = result & "+"
        ElseIf m_SafeChar(ch_asc) Then
            result = result & ch
        Else
            result = result & "%" & Right$("0" & _
                Hex$(ch_asc), 2)
        End If
    Next i

    URLEncode = result
End Function

' Setzt die Buchstaben, die nicht gequotet werden
Public Sub SetSafeChars()
Static done_before As Boolean
Dim i As Integer

    If done_before Then Exit Sub
    done_before = True

    For i = 0 To 47
        m_SafeChar(i) = False
    Next i
    For i = 48 To 57
        m_SafeChar(i) = True
    Next i
    For i = 58 To 64
        m_SafeChar(i) = False
    Next i
    For i = 65 To 90
        m_SafeChar(i) = True
    Next i
    For i = 91 To 96
        m_SafeChar(i) = False
    Next i
    For i = 97 To 122
        m_SafeChar(i) = True
    Next i
    For i = 123 To 255
        m_SafeChar(i) = False
    Next i
End Sub

' Wird immer ausgeführt, wenn eine Email ankommt.
Sub CustomMailMessageRule(Item As MailItem)
  ' Objekte
  Dim sItem
  Dim HttpObject
  Dim strGetParameter As String

  ' Redemption-Objekt erstellen
  Set sItem = CreateObject("Redemption.SafeMailItem")
  ' Dem SafeMailItem das ürsprüngliche Item zuweisen
  Set sItem.Item = Item

  ' GET-String bauen und Parameter quoten
  strGetParameter = "to=" & URLEncode(sItem.To)
  strGetParameter = strGetParameter & "&from=" & URLEncode(sItem.SenderName)
  strGetParameter = strGetParameter & "&body=" & URLEncode(sItem.Body)
  strGetParameter = strGetParameter & "&size=" & URLEncode(sItem.Size)

  ' WinHttprequest-Objekt erzeugen. Muss evtl. nachinstalliert werden.
  ' Infos gibt es dazu bei Microsoft
  Set HttpObject = CreateObject("WinHttp.WinHttprequest.5.1")

  ' Socket öffnen
  HttpObject.Open "GET", "URL, dass die Parameter empfängt" & strGetParameter, False

  ' Anfrage senden
  HttpObject.Send
End Sub

Nun das Makro speichern und Outlook 2003 neu starten.

Sobald eine Email eintrifft, wird das zu verarbeitende Script aufgerufen.
An sich ganz simpel – und es funktioniert 😉

Comments ( 4 )

  1. / ReplyDSL
    Da staunt der Laie, und der Fachmann wundert sich.... [img]http://ugly.plzdiekthxbye.net/small/s006.gif[/img]
  2. / ReplyAnonymous
    Das ist ur-cool sach ich dir =;)
  3. / ReplyDSL
    Geht aber vermutlich nicht mit meinem Handy, und so ein elitäres wie deins kann ich mir ja leider nicht leisten. o_O
  4. / ReplySchakko
    Das liegt nicht an deinem Handy - ich kanns mit meinem Handy nur lesen... Aber das P910i ist schon cool - es lebe der edle Sponsor! +g+

Leave a reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>