1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

Hỏi đáp Bác nào chỉ em về cái đăng nhập vào gmail bằng _HttpRequest với

Thảo luận trong 'Thảo luận chung - Hỏi đáp' bắt đầu bởi Nguyễn Văn Tất, 9/5/17.

  1. Nguyễn Văn Tất

    Nguyễn Văn Tất Thành viên
    • 8/11

    Tham gia ngày:
    7/1/17
    Bài viết:
    62
    Đã được thích:
    5
    - Mong các bác chỉ giáo ^^
     
  2. net_name

    net_name Thành viên mới
    • 3/6

    Tham gia ngày:
    13/1/16
    Bài viết:
    5
    Đã được thích:
    3
    cái này đơn giản mà, có người share rồi mà bạn
     
  3. Nguyễn Văn Tất

    Nguyễn Văn Tất Thành viên
    • 8/11

    Tham gia ngày:
    7/1/17
    Bài viết:
    62
    Đã được thích:
    5
    Bằng _HttpRequest bác ạ
     
  4. net_name

    net_name Thành viên mới
    • 3/6

    Tham gia ngày:
    13/1/16
    Bài viết:
    5
    Đã được thích:
    3
    _CheckMail("dien_email", "dien_pass")
    sửa lại email và pass của bác vào đây là ok

    Mã (AutoIt):
    #include <string.au3>
    #include <array.au3>
    Global $eReturn = _CheckMail("dien_email", "dien_pass")
    Global $Emails = @extended
    MsgBox(0,0,_ArrayDisplay($eReturn))
    Switch @error
        Case 0
            Switch @extended
                Case True
                    ConsoleWrite("   0>"&$eReturn[0][0] & @CR)
                    ConsoleWrite("   "& $Emails & " " & $eReturn[0][1] & @CR)
                    For $x = 1 To $Emails
                        ConsoleWrite("!>Title   - " & $eReturn[$x][0] & @CR)
                        ConsoleWrite("+>Name    - " & $eReturn[$x][1] & @CR)
                        ConsoleWrite("->Email   - " & $eReturn[$x][2] & @CR)
                        ConsoleWrite(">summary - " & $eReturn[$x][3] & @CR & @CR)
                    Next
                Case Else
                    MsgBox(64,"success!","Success! But you have no new emails :(")
            EndSwitch
        Case 1
            MsgBox(0,"Error!","Couldn't get your new emails for some reason...")
        Case 2,3
            MsgBox(0,"Error!","you need to enter an user name and password!")
        Case 4
            MsgBox(16,"Error!","Error Getting URL Source!")
        Case 5
            MsgBox(16,"Error!","No response?")
        Case 6
            MsgBox(16,"Error!","Unauthorized access, possibly a wrong username or password!")
    EndSwitch

    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _CheckMail
    ; Description ...: Checks a Google Email for new emails.
    ; Syntax ........: _CheckMail($UserName, $Pswd[, $UserAgentString = ""])
    ; Parameters ....: $UserName            - An unknown value.
    ;                 $Pswd             - An unknown value.
    ;                 $UserAgentString   - [optional] An unknown value. Default is "".
    ; Return values .: A 2d array with email information as follows~
    ;                   1|Title
    ;                   2|Name
    ;                   3|Email
    ;                   4|Summary
    ;                   5|Date
    ;                   6|Time
    ;
    ; Author ........: dantay9
    ; Modified ......: THAT1ANONYMOUSDUDE
    ; Remarks .......:
    ; Related .......:
    ; Link ..........: http://www.autoitscript.com/forum/topic/111853-gmail-email-checker/page__view__findpost__p__819409
    ; Example .......: Yes
    ; ===============================================================================================================================

    Func _CheckMail($UserName, $Pswd, $UserAgentString = "")
        If Not $UserName Then Return SetError(2,0,0)
        If Not $Pswd Then Return SetError(3,0,0)
        If $UserAgentString Then HttpSetUserAgent($UserAgentString)
        Local $source = InetRead("https://" & $UserName & ":" & $Pswd & "@mail.google.com/mail/feed/atom",1)
        If @error Then
            ConsoleWrite("!>Error Getting URL Source!" & @CR & "     404>@Error =" & @error & @CR & "    404>@Extended =" & @extended & @CR)
            Return SetError(4,0,0)
        EndIf
        If $source Then
            $source = BinaryToString($source)
        Else
            Return SetError(5,0,0)
        EndIf
        If StringLeft(StringStripWS($source, 8), 46) == "<HTML><HEAD><TITLE>Unauthorized</TITLE></HEAD>" Then  Return SetError(6, 0, 0)
        If Not Number(StringBetween($source, "<fullcount>", "</fullcount>")) Then Return SetError(0,0,0)
        Local $Email = _StringBetween($source, "<entry>", "</entry>")
        If @error Then Return SetError(1, 0, 0)
        Local $Time
        Local $Count = UBound($Email)
        Local $Datum[$Count + 1][6]
        $Datum[0][0] = StringBetween($source, "<title>", "</title>")
        $Datum[0][1] = StringBetween($source, "<tagline>", "</tagline>")
        For $i = 0 To $Count - 1
            $Datum[$i+1][0] = StringBetween($Email[$i], "<title>", "</title>")
            If Not $Datum[$i+1][0] Then $Datum[$i][0] = "(no subject)"
            $Datum[$i+1][1] = StringBetween($Email[$i], "<name>", "</name>")
            $Datum[$i+1][2] = StringBetween($Email[$i], "<email>", "</email>")
            $Datum[$i+1][3] = StringBetween($Email[$i], "<summary>", "</summary>")
            $Time = StringBetween($Email[$i], "<issued>", "</issued>")
            $Datum[$i+1][4] = DateFromTimeDate($Time)
            $Datum[$i+1][5] = TimeFromTimeDate($Time)
        Next
        Return SetError(0,$Count,$Datum)
    EndFunc
    Func StringBetween($Str, $S, $E)
        Local $B = _StringBetween($Str, $S, $E)
        If @error Then Return SetError(1,0,0)
        Return SetError(0,0,$B[0])
    EndFunc   ;==>StringBetween

    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: DateFromTimeDate
    ; Description ...: Returns email sent date.
    ; Syntax ........: DateFromTimeDate($String)
    ; Parameters ....: $String            - A gmail date string
    ; Return values .: None
    ; Author ........: ???
    ; Example .......: No
    ; ===============================================================================================================================

    Func DateFromTimeDate($String)
        Local $RegEx = StringRegExp($String, "(?<Year>d{2}|d{4})(?:-)(?<Month>d{1,2})(?:-)(?<Day>d{1,2})", 1)
        If IsArray($RegEx) Then
            Return Int($RegEx[0]) & "/" & Int($RegEx[1]) & "/" & Int($RegEx[2])
        Else
            Return SetError(1, 0, 0)
        EndIf
    EndFunc   ;==>DateFromTimeDate

    ; #FUNCTION# ====================================================================================================================

    ; Name ..........: TimeFromTimeDate
    ; Description ...: Returns the email sent time.
    ; Syntax ........: TimeFromTimeDate($String)
    ; Parameters ....: $String            - An unknown value.
    ; Return values .: None
    ; Author ........: ???
    ; Example .......: No
    ; ===============================================================================================================================

    Func TimeFromTimeDate($String)
        Local $RegEx = StringRegExp($String, "(?<Hour>d{1,2})(?::)(?<Minute>d{1,2})(?::)(?<Second>d{1,2})", 1)
        If IsArray($RegEx) Then
            Return (Int($RegEx[0]) - 4) & ":" & Int($RegEx[1]) & ":" & Int($RegEx[2]) ;don't know why I have to subtract 4
        Else
            Return SetError(1, 0, 0)
        EndIf
    EndFunc   ;==>TimeFromTimeDate
     
  5. net_name

    net_name Thành viên mới
    • 3/6

    Tham gia ngày:
    13/1/16
    Bài viết:
    5
    Đã được thích:
    3
    đợi em 5 phút cho bác cái example luôn
     
  6. Nguyễn Văn Tất

    Nguyễn Văn Tất Thành viên
    • 8/11

    Tham gia ngày:
    7/1/17
    Bài viết:
    62
    Đã được thích:
    5
    Code sai chổ nào đó bác ạ nhập sai hay đúng nó cũng trả về MsgBox(64,"success!","Success! But you have no new emails :(")
     
  7. Only Love

    Only Love Thành viên
    • 18/23

    Tham gia ngày:
    8/9/15
    Bài viết:
    69
    Đã được thích:
    59
    Code này cũ rồi, cái URL "https://"&$UserName&":"&$Pswd&"@mail.google.com/mail/feed/atom" google nó bỏ lâu rồi không có get được nữa đâu, trừ khi bạn có Cookies hoặc có Authorize kèm theo request

    Edited: Mình mới tìm hiểu xong, theo cơ chế mới của Google thì phải Bật chế độ "Allow less secure apps" mới có thể chạy được code trên của @net_name
    Để bật chế độ này thì bạn Đăng nhập tài khoản Google/Gmail tương ứng cần check, vào link này:
    https://myaccount.google.com/lesssecureapps?pli=1
    Bật ON. Xong, chạy code và tận hưởng.
     
    Chỉnh sửa cuối: 9/5/17
    Nguyễn Văn Tất thích bài này.
  8. Nguyễn Văn Tất

    Nguyễn Văn Tất Thành viên
    • 8/11

    Tham gia ngày:
    7/1/17
    Bài viết:
    62
    Đã được thích:
    5
    - Vẫn vậy bác ơi
     
  9. Only Love

    Only Love Thành viên
    • 18/23

    Tham gia ngày:
    8/9/15
    Bài viết:
    69
    Đã được thích:
    59
    Ra đây này @@

    [​IMG]
     
  10. greatsky073

    greatsky073 (@_@)
    • 8/11

    Tham gia ngày:
    22/5/17
    Bài viết:
    39
    Đã được thích:
    4
    Nơi ở:
    HCM
    sao iêm cũng hem chạy đc pác?
    pác giúp iêm phát
     
  11. Only Love

    Only Love Thành viên
    • 18/23

    Tham gia ngày:
    8/9/15
    Bài viết:
    69
    Đã được thích:
    59
    Bạn bật Allow less secure apps như mình hướng dẫn ở cmt #7 chưa ?
     
  12. greatsky073

    greatsky073 (@_@)
    • 8/11

    Tham gia ngày:
    22/5/17
    Bài viết:
    39
    Đã được thích:
    4
    Nơi ở:
    HCM
    rồi bác
     
  13. Nhuantv

    Nhuantv Thành viên mới
    • 1/6

    Tham gia ngày:
    2/1/20
    Bài viết:
    1
    Đã được thích:
    0
    chỗ nhập email bác bỏ cái đuôi "@gmail.com" đi là được. E cũng vừa dính lỗi đó
     

Chia sẻ trang này

Đang tải...