2013-03-06 41 views
5

Tôi cần kết nối với tài khoản Gmail qua IMAP bằng cách sử dụng PHP. Tôi có một số mã làm việc, nhưng khi cố gắng thiết lập kết nối, tôi nhận được lỗi sau:kết nối gmail qua imap php? lỗi chứng chỉ nhà phát hành địa phương

Warning: imap_open() [function.imap-open]: Couldn't open stream {imap.gmail.com:993/ssl}[Gmail]/All Mail in /home/demoosiz/public_html/goqlue/email.php on line 31
Cannot connect to Gmail: Certificate failure for imap.gmail.com: unable to get local issuer certificate: /C=US/O=Google Inc/CN=Google Internet Authority

mã của tôi là dưới

<?php 
    /* connect to gmail */ 
    $hostname = '{imap.gmail.com:993/ssl}[Gmail]/All Mail'; 
    $username = 'hidden'; 
    $password = 'hidden'; 

    /* 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; 
    } 

    /* close the connection */ 
    imap_close($inbox); 
    ?> 
+0

được bạn thử nghiệm trong XAMPP? – Iraklis

+0

Bạn vừa đăng nhập và mật khẩu vào tài khoản thư của mình chưa? –

+0

Đúng vậy. Đã gửi bản chỉnh sửa để xóa nó – Iraklis

Trả lời

6

Điều này dường như là một vấn đề chứng chỉ.

Tôi không cho bạn biết vấn đề về chứng chỉ cũng như cách giải quyết vấn đề.

Tuy nhiên, bạn có thể để lại tài khoản gmail của bạn mở các cuộc tấn công bằng phớt lờ rằng vấn đề vô hiệu hóa xác nhận giấy chứng nhận:

$hostname = '{imap.gmail.com:993/ssl/novalidate-cert}[Gmail]/All Mail'; 
+3

Bạn không giải quyết các vấn đề về chứng chỉ bằng cách bỏ qua * chứng chỉ. Đó là thực hành rất xấu. Và hầu như không bằng nhau như cung cấp mật khẩu rõ ràng. – hakre

+0

Tôi đồng ý, nhưng với thông tin giới hạn của OP, điều này thường xảy ra trong XAMMP. Nếu anh ta cố gắng điều này và điều này làm việc, anh ta có thể tiếp tục xử lý nó, như nạp chứng chỉ từ một tập tin. – Iraklis

+0

Tôi đã chỉnh sửa câu trả lời của bạn, vui lòng kiểm tra xem câu trả lời đó có phản ánh tốt hơn những gì bạn muốn đề xuất hay không. Tôi đã cố gắng sử dụng ngôn ngữ dễ hiểu nhưng bạn có thể thấy nó xúc phạm. – hakre

3

Cannot connect to Gmail: Certificate failure for imap.gmail.com: unable to get local issuer certificate: /C=US/O=Google Inc/CN=Google Internet Authority

Hệ thống này bạn thực thi mã trên là thiếu giấy chứng nhận đó. Không có nhiều hơn nữa có thể nói về điều này bằng các thông tin bạn cung cấp với câu hỏi của bạn. Tham khảo tài liệu hệ thống của hệ điều hành bạn có cách cài đặt chứng chỉ và cách thu thập chứng chỉ cần thiết.

Xem cũng như:

Các vấn đề liên quan