จะดึง Gmail บน PHP IMAP ได้อย่างไร

ฉันลองโฮสต์นี้:

{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX
{imap.gmail.com:993/imap/ssl}INBOX
{imap.gmail.com:993/ssl/novalidate-cert}Current Batch
{imap.gmail.com:993/ssl/novalidate-cert}
{imap.gmail.com:995/ssl/serivce=pop3}INBOX

ไม่มีใครทำงานเลย โฮสต์ Gmail คืออะไรหรือการตั้งค่า IMAP คืออะไร

ขอบคุณ!


person user3744155    schedule 05.09.2014    source แหล่งที่มา
comment
คุณได้ตรวจสอบแล้วว่าพอร์ต 993 ไม่ได้ปิดไฟร์วอลล์บนโฮสต์ของคุณหรือไม่?   -  person Max    schedule 12.10.2015


คำตอบ (4)


imap.gmail.com:993/imap/ssl}INBOX ควรเป็นกล่องจดหมายที่ถูกต้อง คุณใช้สิ่งนี้ในโค้ด php ของคุณอย่างไร คุณเพียงต้องการรับอีเมลของคุณ? เพราะกว่ามันจะมีลักษณะดังนี้:

/* connect to gmail */
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = '[email protected]';
$password = 'password';

/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());
person Mikelo    schedule 05.09.2014
comment
รหัสของฉันคือ: ‹?php $hostname = '{imap.gmail.com:993/imap/ssl}INBOX'; $ชื่อผู้ใช้ = '[email protected]'; $รหัสผ่าน = 'รหัสผ่าน'; $inbox = imap_open($hostname,$username,$password) or die('ไม่สามารถเชื่อมต่อกับ Gmail: ' .imap_last_error()); $num_msgs = imap_num_msg($กล่องจดหมาย); imap_close($กล่องจดหมาย); เสียงสะท้อน $num_msgs; ?› คำตอบ: หมดเวลาการเชื่อมต่อ - person user3744155; 05.09.2014
comment
มันช่วยได้ไหมถ้าคุณปิดการเชื่อมต่อหลังจากที่คุณ echo $num_msgs - person Mikelo; 05.09.2014
comment
ไม่ถึงจุด. บรรทัด $inbox สำหรับ PHP ที่ออกจากการเชื่อมต่อหมดเวลา จะไม่พิมพ์ $num_msgs - person user3744155; 05.09.2014
comment
หากคุณได้รับข้อผิดพลาดเช่น โปรดเข้าสู่ระบบผ่านเว็บเบราว์เซอร์ของคุณ: ลองใช้การยืนยัน 2 setp และรหัสผ่านเฉพาะแอปตามที่ตอบโดย abhishek gupta stackoverflow.com/questions/35377560/ - person Sunil Kumar; 20.10.2018
comment
ผู้ชาย! คุณช่วยชีวิตวิญญาณที่น่าสงสาร - person peterchaula; 05.01.2021

การตั้งค่ามีดังนี้:

$mail = new Imap([
      'host'  => 'imap.gmail.com',
      'user'  => '[email protected]',
      'password' => 'password',
      'port'  => 993,
      'ssl'   => 'SSL',
]);

จากนั้นไปที่ https://myaccount.google.com/security#connectedapps และทำเครื่องหมายที่ "อนุญาตน้อยลง แอพที่ปลอดภัย'

person hawx    schedule 12.10.2015

นี่คือตัวอย่างโค้ดที่สมบูรณ์ซึ่งเชื่อมต่อและดึงอีเมลจาก gmail :

/* connect to gmail */
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'gmail_email_address';
$password = 'password';
/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());
/* grab emails */
$emails = imap_search($inbox,'ALL');
/* if emails are returned, cycle through each... */
if($emails) {        
        /* begin output var */
        $output = '';        
        /* put the newest emails on top */
        rsort($emails);        
        /* for every email... */
        foreach($emails as $email_number) {                
                /* get information specific to this email */
                $overview = imap_fetch_overview($inbox,$email_number,0);
                $message = imap_fetchbody($inbox,$email_number,2);                
                /* output the email header information */
                $output.= '<div class="toggler '.($overview[0]->seen ? 'read' : 'unread').'">';
                $output.= '<span class="subject">'.$overview[0]->subject.'</span> ';
                $output.= '<span class="from">'.$overview[0]->from.'</span>';
                $output.= '<span class="date">on '.$overview[0]->date.'</span>';
                $output.= '</div>';

                /* output the email body */
                $output.= '<div class="body">'.$message.'</div>';
        }        
        echo $output;
}
imap_close($inbox);
  • ป้อนรหัสอีเมลและรหัสผ่านที่ถูกต้อง
  • คุณอาจต้องการแทนที่

    $emails = imap_search($กล่องจดหมาย,'ทั้งหมด');

ด้วยสิ่งนี้เพื่อจำกัดผลลัพธ์ให้แคบลง

$emails = imap_search($inbox,'SINCE "19 October 2018"');

หรือคุณอาจได้รับข้อผิดพลาดการหมดเวลา

person Sunil Kumar    schedule 20.10.2018

มีปัญหาหลายประการกับ PHP IMAP และการเชื่อมต่อกับ Gmail

ขั้นแรกตรวจสอบให้แน่ใจว่าคุณได้เปิดใช้งาน IMAP ในการตั้งค่า Gmail ของคุณ (ค่าเริ่มต้นคือปิด!)

SSL IMAP ตัวที่สองบน PHP มีปัญหากับหลายเวอร์ชัน

เพื่อให้มันใช้งานได้ให้เลือก : {imap.gmail.com:993/ssl/novalidate-cert}

ไปที่บัญชี Google ของคุณ (ไม่ใช่ Gmail ในครั้งนี้) ไปที่การรักษาความปลอดภัยและอนุญาตการเข้าถึงจากวิธีการที่มีความปลอดภัยน้อยกว่า (อนุญาตแอปที่มีความปลอดภัยน้อยกว่า)

แล้วมันได้ผล หวังว่าจะมีการแก้ไขสักวันหนึ่ง

person C. Cobben    schedule 26.01.2019