#include <Array.au3>
#include <String.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include-once
Func _Base64Decode($Data)
	Local $Opcode = "0xC81000005356578365F800E8500000003EFFFFFF3F3435363738393A3B3C3DFFFFFF00FFFFFF000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132338F45F08B7D0C8B5D0831D2E9910000008365FC00837DFC047D548A034384C0750383EA033C3D75094A803B3D75014AB00084C0751A837DFC047D0D8B75FCC64435F400FF45FCEBED6A018F45F8EB1F3C2B72193C7A77150FB6F083EE2B0375F08A068B75FC884435F4FF45FCEBA68D75F4668B06C0E002C0EC0408E08807668B4601C0E004C0EC0208E08847018A4602C0E00624C00A46038847028D7F038D5203837DF8000F8465FFFFFF89D05F5E5BC9C21000"

	Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
	DllStructSetData($CodeBuffer, 1, $Opcode)

	Local $Ouput = DllStructCreate("byte[" & BinaryLen($Data) & "]")
	Local $Ret = DllCall("user32.dll", "int", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
													"str", $Data, _
													"ptr", DllStructGetPtr($Ouput), _
													"int", 0, _
													"int", 0)

	Return BinaryMid(DllStructGetData($Ouput, 1), 1, $Ret[0])
EndFunc
Func _getanhang($v_text)
	Local $pos, $split, $split2, $split3, $string2, $encodet, $string1
	$pos = StringInStr($v_text,'boundary="')
	If StringInStr($v_text,"Content-Type: multipart/mixed;") <> 0 And $pos <> 0 Then
		$searchstring = _StringBetween($v_text,'boundary="','"')
		$split = StringSplit($v_text,$searchstring[0],1)
		$split3 = StringSplit($split[$split[0]-1],'filename="',1)
		$string2 = _StringBetween($split3[2],"",'"')
		$split2 = _StringBetween($split[$split[0]-1],'filename="' & $string2[0] & '"',"")
		If StringInStr($split[$split[0]-1],"Content-Type: text") <> 0 Then
			$string1 = StringTrimLeft($split2[0],4)
			$encodet = StringTrimRight($string1,2)
		Else
			$encodet = _Base64Decode($split2[0])
		EndIf
		Local $rueckgabe[2] = [$encodet, $string2[0]]
		Return $rueckgabe
	EndIf
	Return 0
EndFunc

Func _downloadmail()
	Local $Form1, $Combo1, $i, $Button1, $Msg, $data, $mail, $v_mails
	$v_mails = _POP3Info()
	If $v_mails[0][0] = 0 Then
		MsgBox(0,"!","Keine E-Mails auf dem Server vorhanden!")
		Exit
	EndIf
	$Form1 = GUICreate("E-Mails", 186, 132, 229, 149)
	$Combo1 = GUICtrlCreateCombo("", 24, 40, 145, 25)
	For $i = 1 To $v_mails[0][0]
		GUICtrlSetData(-1,$i & "= " & $v_mails[$i][3])
	Next
	$Button1 = GUICtrlCreateButton("Download", 48, 80, 75, 25)
	GUISetState(@SW_SHOW)

	While 1
		$Msg = GUIGetMsg()
		Switch $Msg
			Case $GUI_EVENT_CLOSE
				Exit
			Case $Button1
				If GUICtrlRead($Combo1) = "" Then ContinueLoop
				$data = StringSplit(GUICtrlRead($Combo1), "=")
				GUIDelete()
				$mail = _POP3Retr($data[1])
				Return $mail

		EndSwitch
	WEnd
EndFunc
