Email Creator - Eine Email für 10 Minuten

  • [Blockierte Grafik: http://www.autoit.de/file:///C:/Users/Johannes/AppData/Local/Temp/moz-screenshot.jpg]Hi Community,

    hier ein Script mit dem sich ein Emailpostfach für 10 Minuten anlegen lässt. Es ist ideal um z.B. Registrationen abzuschließen die später, weitere Werbung fordert. Ihr werdet das bestimmt kennen...

    Ihr bekommt jeweils eine generierte Email, die nach 10 Minuten ausläuft, verlängert ihr diese nicht. Bei eintreffenden Email, werdert Ihr benachrichtigt (TrayTip). Ein Doppelklick auf eine Email im ListView und ihr seht die komplette Email. Eine geöffnete Email wird automatisch im Emails-Ordner gespeichert.

    Aktuelle Version: 0.2

    Neu:
    * Der Benutzer kann die Option "Emailadresse automatisch verlängern" anwählen, somit wird dir Gültigkeitszeit der Emailadresse, alle Minute wieder auf 10 Minuten erhöht
    * "verlängern"-Button gefixt


    Screenshot:
    [Blockierte Grafik: http://img593.imageshack.us/img593/4402/emailcreator.png]

    Script:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <Inet.au3>
    #include <string.au3>
    #include <array.au3>
    #include <EditConstants.au3>
    #include <IE.au3>
    #include <Date.au3>
    #include <GuiListView.au3>
    #include <StructureConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $sWindowTitel = "Email Creator 0.1 - by Jautois - Emails: "
    Global $sTempSource
    Global $sUrl = "http://10minutemail.com/10MinuteMail/index.html"
    Global $iEmailCount = 0
    Global $iTempMessages = 0
    Global $sMoreTimeLink
    Global $oIE
    Global $sEmail[1000]
    Global $sEmailFrom[1000]
    Global $sEmailSource[1000]
    Global $bEmailCheck[1000]
    Global $sEmailSource[1000]
    Global $sEmailDate[1000]
    Global $sEmailSubject[1000]
    Global $sEmailData[1000]
    Dim $aColor[3] = [0x008000, "0xFB8E03", "0xF91905"]

    [/autoit] [autoit][/autoit] [autoit]

    TraySetIcon("Shell32.dll", -157)

    [/autoit] [autoit][/autoit] [autoit]

    If Not FileExists(@ScriptDir & "\EMails") Then
    DirCreate(@ScriptDir & "\EMails")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Ping("www.google.de")
    If @error Then
    MsgBox(16, "Info", "Keine Internetverbindung!" & @CRLF & "Das Programm wird in 5 Sekunden beendet!", 5)
    Exit
    Else
    Ping("www.10minutemail.com")
    If @error Then
    MsgBox(16, "Info", "Der Onlinedienst ist nicht erreichbar!" & @CRLF & "Das Programm wird in 5 Sekunden beendet!", 5)
    Exit
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $sSource = _INetGetSource($sUrl)

    [/autoit] [autoit][/autoit] [autoit]

    $sTemp = _StringBetween($sSource, "<br />", " is your")
    $sOwnEmail = $sTemp[0]

    [/autoit] [autoit][/autoit] [autoit]

    $sTemp = _StringBetween($sSource, "Your e-mail address will expire in ", " minut")
    $iExpireTime = $sTemp[0]

    [/autoit] [autoit][/autoit] [autoit]

    $hMainWindow = GUICreate($sWindowTitel, 470, 370, Default, Default, BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE))
    GUISetBkColor(0x808080)
    GUISetIcon("Shell32.dll", -157)
    WinSetTitle($sWindowTitel, "", $sWindowTitel & "0")
    GUICtrlCreateLabel("Email:", 8, 16, 47, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $pInputEmail = GUICtrlCreateInput($sOwnEmail, 56, 14, 129, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
    GUICtrlCreateLabel("Verfügbar:", 208, 16, 76, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $pLabelExpireTime = GUICtrlCreateLabel($iExpireTime & " Minuten", 283, 16, 77, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, $aColor[0])
    $pButtonMoreTime = GUICtrlCreateButton("verlängern", 368, 12, 89, 25, 0)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $ListView1 = GUICtrlCreateListView("Absender|Betreff|Datum", 8, 48, 449, 249)
    GUIRegisterMsg(0x004E, "_DoubleClickOnListView")
    GUICtrlSendMsg(-1, 0x101E, 0, 155)
    GUICtrlSendMsg(-1, 0x101E, 1, 162)
    GUICtrlSendMsg(-1, 0x101E, 2, 128)
    $pButtonExit = GUICtrlCreateButton("Beenden", 320, 304, 137, 33)
    $pButtonUpdate = GUICtrlCreateButton("Update", 8, 304, 145, 33)
    GUISetState(@SW_SHOW, $hMainWindow)

    [/autoit] [autoit][/autoit] [autoit]

    $hEmailWindow = GUICreate("Email", 665, 555, Default, Default, BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE))
    _IEErrorHandlerRegister()
    $oIEE = _IECreateEmbedded()
    $pActiveX1 = GUICtrlCreateObj($oIEE, 8, 12, 641, 465)
    $pButtonClose = GUICtrlCreateButton("Schließen", 504, 488, 145, 33)
    GUISetState(@SW_HIDE, $hEmailWindow)

    [/autoit] [autoit][/autoit] [autoit]

    AdlibEnable("_Email", 5000)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $pButtonExit
    Exit
    Case $pButtonMoreTime
    _MoreTime()
    Case $pButtonClose
    GUISetState(@SW_HIDE, $hEmailWindow)
    Case $pButtonUpdate
    _CreateUpdateGUI("Updates", "http://bbs07.spacequadrat.de/EmailCreator/data.txt", "http://bbs07.spacequadrat.de/EmailCreator/")
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Email()
    $sTempSource = _INetGetSource($sUrl)

    [/autoit] [autoit][/autoit] [autoit]

    $sTemp = _StringBetween($sTempSource, "You currently have ", " messag")
    $iMessages = $sTemp[0]

    [/autoit] [autoit][/autoit] [autoit]

    If $iMessages > $iTempMessages Then
    $iEmailCount = $iEmailCount + 1
    _PlaySystemSound("MailBeep", True)
    TrayTip("Neue Email(s)!", " ", 5, 1)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    WinSetTitle($sWindowTitel, "", $sWindowTitel & $iMessages)

    [/autoit] [autoit][/autoit] [autoit]

    $sTempSplitSource = _StringBetween($sTempSource, "<tbody>", "</tbody>")
    $sSplitSource = StringSplit($sTempSplitSource[0], '<td><input type="checkbox" name="', 1)

    [/autoit] [autoit][/autoit] [autoit]

    If $sSplitSource[0] = 1 Then
    ;-
    Else
    For $i = 0 To $iMessages - 1
    If $bEmailCheck[$i] <> True Then

    [/autoit] [autoit][/autoit] [autoit]

    $sTemp = _StringBetween($sSplitSource[$i + 2], 'disabled="disabled" /></td>', '<td><a href="/10MinuteMail/index.html?')
    $sEmail[$i] = StringTrimRight(StringTrimLeft($sTemp[0], 9), 6)

    [/autoit] [autoit][/autoit] [autoit]

    $sTemp = _StringBetween($sSplitSource[$i + 2], '<td><a href="', '" id="')
    $sEmailSource[$i] = _INetGetSource("http://10minutemail.com" & StringReplace($sTemp[0], "amp;", "&", 1))

    [/autoit] [autoit][/autoit] [autoit]

    $sTemp = _StringBetween($sEmailSource[$i], '<div style="clear:both"></div>', '<!--')
    $sEmailData[$i] = $sTemp[0]

    [/autoit] [autoit][/autoit] [autoit]

    $tCur = _Date_Time_GetLocalTime()
    $sEmailDate[$i] = _DateToMonth(@MON) & " " & @MDAY & ", " & @YEAR & " " & StringTrimLeft(_Date_Time_SystemTimeToDateTimeStr($tCur), 11)

    [/autoit] [autoit][/autoit] [autoit]

    $sTemp = _StringBetween($sSplitSource[$i + 2], 'j_id35">', '</a>')
    $sEmailSubject[$i] = $sTemp[0]

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateListViewItem($sEmail[$i] & "|" & $sEmailSubject[$i] & "|" & $sEmailDate[$i], $ListView1)

    [/autoit] [autoit][/autoit] [autoit]

    $bEmailCheck[$i] = True

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $sTemp = _StringBetween($sTempSource, "Your e-mail address will expire in ", " minut")
    $iExpireTime = $sTemp[0]

    [/autoit] [autoit][/autoit] [autoit]

    If $iExpireTime = 0 Then
    _PlaySystemSound("SystemExclamation", True)
    MsgBox(64, "Info", "Die Verfügbarkeit der Email ist abgelaufen!" & @CRLF & "Das Programm wird in 3 Sekunden geschlossen.", 3)
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $iExpireTime < 10 Then
    GUICtrlSetState($pButtonMoreTime, $GUI_ENABLE)
    Else
    GUICtrlSetState($pButtonMoreTime, $GUI_DISABLE)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($pLabelExpireTime, $iExpireTime & " Minuten")
    If $iExpireTime >= 7 Then
    GUICtrlSetColor($pLabelExpireTime, $aColor[0])
    ElseIf $iExpireTime >= 4 And $iExpireTime <= 6 Then
    GUICtrlSetColor($pLabelExpireTime, $aColor[1])
    ElseIf $iExpireTime <= 3 Then
    GUICtrlSetColor($pLabelExpireTime, $aColor[2])
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $iTempMessages = $iMessages

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_Email

    [/autoit] [autoit][/autoit] [autoit]

    Func _MoreTime()

    [/autoit] [autoit][/autoit] [autoit]

    _IELinkClickByIndex($oIE, 2)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_MoreTime

    [/autoit] [autoit][/autoit] [autoit]

    Func _InsertEmailData($iFuncIndex = "")
    Local $sTempPath = @ScriptDir & "\EMails\E-Mail_" & _DateToMonth(@MON) & "-" & @MDAY & "-" & @YEAR & "[Time " & @HOUR & "." & @MIN & "." & @SEC & "].html"

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW, $hEmailWindow)
    $sEmailHeader = "Von: " & $sEmail[$iFuncIndex] & "<br />" & "Betreff: " & $sEmailSubject[$iFuncIndex] & "<br />" & "<br />" & $sEmailData[$iFuncIndex]
    FileWrite($sTempPath, $sEmailHeader)
    _IENavigate($oIEE, $sTempPath, $sEmailHeader)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_InsertEmailData

    [/autoit] [autoit][/autoit] [autoit]

    Func _DoubleClickOnListView($hWndGUI, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code

    [/autoit] [autoit][/autoit] [autoit]

    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3)
    If $wParam = $ListView1 Then
    If $event = $NM_DBLCLK Then
    _InsertEmailData(_GUICtrlListView_GetSelectedIndices($ListView1))
    EndIf
    EndIf
    $tagNMHDR = 0
    $event = 0
    $lParam = 0

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_DoubleClickOnListView

    [/autoit] [autoit][/autoit] [autoit]

    Func _PlaySystemSound($sSoundName, $bAsync = False)
    Local Const $SND_ALIAS = 0x10000
    Local Const $SND_ASYNC = 0x1
    Local $flags
    $flags = $SND_ALIAS
    If $bAsync Then $flags = BitOR($flags, $SND_ASYNC)
    DllCall('winmm.dll', 'int', 'PlaySoundA', 'str', $sSoundName, 'int', 0, 'int', $flags)
    EndFunc ;==>_PlaySystemSound

    [/autoit] [autoit][/autoit] [autoit]

    Func _CreateUpdateGUI($sWindowTitel, $sDataTextPathOnServer, $sFilePathOnServer)
    Local $sTempData, $iPercent = 0

    [/autoit] [autoit][/autoit] [autoit]

    $hWindow = GUICreate($sWindowTitel, 475, 355, Default, Default, BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE))
    GUISetBkColor(0xBFCDDB)
    GUISetIcon(@SystemDir & "\shell32.dll", -14)
    $pDlProgress = GUICtrlCreateProgress(72, 24, 390, 25)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $pInternetIcon = GUICtrlCreateIcon(@SystemDir & "\shell32.dll", -136, 20, 20)
    $pInternetErrorIcon = GUICtrlCreateIcon(@SystemDir & "\shell32.dll", -220, 20, 20)
    GUICtrlSetState($pInternetErrorIcon, $GUI_HIDE)
    $pArrIcon = GUICtrlCreateIcon(@SystemDir & "\shell32.dll", -268, 74, 50)
    $pListView = GUICtrlCreateListView("Dateiname|Version|Größe|Autor", 8, 80, 455, 201)
    GUICtrlSendMsg(-1, 0x101E, 0, 150)
    GUICtrlSendMsg(-1, 0x101E, 1, 100)
    GUICtrlSendMsg(-1, 0x101E, 2, 100)
    GUICtrlSendMsg(-1, 0x101E, 3, 100)
    $pButtonDL = GUICtrlCreateButton("Download", 200, 288, 129, 33, 0)
    $pButtonExit2 = GUICtrlCreateButton("Schließen", 334, 288, 129, 33, 0)
    $pLabelInfo = GUICtrlCreateLabel("", 100, 60, 340, 17)
    $pCheckboxDirOpen = GUICtrlCreateCheckbox("Ordner nach Download öffnen", 8, 288, 185, 17)
    $pCheckboxProClose = GUICtrlCreateCheckbox("Programm nach Download schließen", 8, 304, 190, 17)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    Ping("www.google.de")
    If @error Then
    GUICtrlSetState($pInternetErrorIcon, $GUI_SHOW)
    GUICtrlSetData($pLabelInfo, "Keine Internetverbindung!")
    Else

    [/autoit] [autoit][/autoit] [autoit]

    InetGet($sDataTextPathOnServer, @TempDir & "\data.txt", 1)

    [/autoit] [autoit][/autoit] [autoit]

    _FileReadToArray(@TempDir & "\data.txt", $sTempData)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($pLabelInfo, "Informationen werden heruntergeladen ...")

    [/autoit] [autoit][/autoit] [autoit]

    Dim $iDataFileSize[$sTempData[0] + 1]

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $sTempData[0]
    $iPercent = $iPercent + (100 / $sTempData[0])
    $sTempDataForRow = StringSplit($sTempData[$i], ",")
    $iDataFileSize[$i] = Round(InetGetSize($sFilePathOnServer & $sTempDataForRow[1]) / 1000)
    $ListView1_0 = GUICtrlCreateListViewItem($sTempDataForRow[1] & "|" & $sTempDataForRow[2] & "|" & $iDataFileSize[$i] & " KB|" & $sTempDataForRow[3], $pListView)
    GUICtrlSetData($pDlProgress, $iPercent)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $iPercent = 0
    GUICtrlSetData($pDlProgress, $iPercent)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($pLabelInfo, "Informationen heruntergeladen!")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $pButtonDL
    $iTempIndex = _GUICtrlListView_GetSelectedIndices($pListView, True)
    If $iTempIndex[0] = 0 Then
    MsgBox(64, "Info", "Bitte eine Datei auswählen!")
    Else
    $sNameSelectedFile = _GUICtrlListView_GetItemText($pListView, $iTempIndex[1])
    GUICtrlSetData($pLabelInfo, $sNameSelectedFile & " wird heruntergeladen")
    $sSaveFilePath = FileSelectFolder("Speichern unter ... ", @DesktopDir, 7, @DesktopDir)
    If @error = 1 Then
    ;-
    Else
    InetGet($sFilePathOnServer & $sNameSelectedFile, $sSaveFilePath & "\" & $sNameSelectedFile, 1, 1)
    While @InetGetActive
    GUICtrlSetData($pDlProgress, (@InetGetBytesRead / $iDataFileSize[$iTempIndex[1] + 1] / 10))
    GUICtrlSetData($pLabelInfo, "Download: " & $sNameSelectedFile & " - " & Int(@InetGetBytesRead / 1000) & "/" & $iDataFileSize[$iTempIndex[1] + 1] & " KB - " & Int((@InetGetBytesRead / $iDataFileSize[$iTempIndex[1] + 1] / 10)) & " %")
    Sleep(100)
    WEnd
    GUICtrlSetData($pDlProgress, 100)
    GUICtrlSetData($pLabelInfo, "Fertig geladen!")
    EndIf
    EndIf
    Case $pButtonExit2
    GUISetState(@SW_HIDE, $hWindow)
    ExitLoop
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    GUISwitch($hMainWindow)
    EndFunc ;==>_CreateUpdateGUI

    [/autoit]

    Anmerkungen:
    - Der "verlängern"-Button wird erst aktiv, wenn die Zeit unter 9 Minuten sinkt
    - Zum Lesen der kompletten Email -> doppelt auf den ListVieweintrag klicken
    - Eine Email geöffnet -> so wird automatisch im Ordner "EMails" im Scriptpfad eine *.html Datei erstellt mit allen Emailinfos


    Mfg Jautois

    7 Mal editiert, zuletzt von Jautois (3. Februar 2011 um 03:03)

  • Dahinter steckt doch ein Service. Wer bietet diesen Service an?

    Ich meine um so eine 10-Min-Mail zu erstellen bedarf es doch einen Emailserver der den Dienst / Service ausführt.
    Oder benötigt man dazu eine eigene Domain?

    Sorry wenn ich das gerade etwas umfrage, aber ich kann es mir nicht gut vorstellen gerade.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Ja, dahinter steckt der Service von 10 Minute Mail. Wie soll es auch anders gehen ;)

    Der Vorteil eben:
    - Benachrichtigung beim Eintreffen einer Mail
    - Email wird direkt gespeichert
    - Anwendung auf dem Pc

  • @Jautois
    Finde es super und das der Service wie o. g. dahinter steckt ist doch okay. Habe nur überlegt.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • @TheBigX: Hast du vielleicht einen Screenshot? Wäre echt super ;)

    Sry, das ich das Script gestern nicht mehr hochstellen konnte. Mir fehlt im Moment die Zeit, da ich viel auf der Arbeit zutun habe.
    Ich bitte um Entschuldigung und werde das Script im Laufe der Woche hochstellen.

    Mfg Jautois

  • Das wollte ich auch mal gemacht habe =D
    Aber habe es nie geschafft ^^

    Respekt und Danke schonmal :)

  • Tolle Idee und tolle Umsetzung!
    Freue mich schon auf die nächste Version! Vllt könntest du die Mails dann auch wieder löschen lassen?
    MfG

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

  • Danke!

    funkey:

    Zitat

    Aber bei mir geht das verlängern nicht

    Der "verlängern"-Button wird erst aktiv, wenn die Zeit unter 9 Minuten sinkt.

    Zitat

    und außerdem wird mir nur der Betreff angezeigt und nicht der Inhalt der Email.

    Du musst auf den ListVieweintrag doppeltklicken und es öffnet sich ein Fenster mit dem kompletten Emailinhalt.

  • Das ist alles schon klar ;), aber ich bekomme beim verlängern diesen Fehler:

    Code
    --> IE.au3 V2.4-0 Error from function _IELinkClickByIndex, $_IEStatus_InvalidDataType

    Und wenn ich auf einen Eintrag doppelklicke offnet sich das Embedded-Fenster nur mit Absender und Betreff. Außerdem wird jedesmal Doppelklicken eine neue Kopie der Email gespeichert, ohne zu schauen, ob diese bereits vorhanden ist. Das ist aber nicht so schlimm.

  • Ok, danke für die Rückmeldung! Ich werde mir die Fehler mal ansehen.

    Bis in der nächsten Version versuche ich dann auch ein besseres Email-Management einzubaun ;)

  • Huhu 579 Tage später (und ich nutze das Prog immernoch :) )

    gibt / gab es eine neue Version, die den Fehler behebt ?(

    *PM schick*

    DANKE, Winke

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"