2015-01-22 4 views
1

wampserver 2.4에서 실행중인 php를 통해 Gmail에 액세스하려고합니다. 단순함을 위해, 이것은 로컬 호스트에서 온 것입니다 (실제 응용 프로그램은 훨씬 더 복잡합니다).wamp 서버 2.4의 PHP에서 imap_pop 사용

몇 가지 표준의 예에 따라, 나는 둘 수 있어요 Gmail을 통해 이메일 (POP 또는 IMAP를 통해) 수신 (SMTP를 통해) 전송 -하지만 "보안 수준이 낮은 앱은"Gmail의의 기능이 (https://www.google.com/settings/security/lesssecureapps)를 사용하는 경우에만 . 물론, 먼저 메일 설정 페이지에서 팝업 및/또는 imap을 활성화해야합니다. (https://mail.google.com/mail/u/0/#settings/fwdandpop)

이 작업이 진행되는 동안 저는 "안전한 기술"(SSL 및 TLS)을 사용하고 싶습니다. 어떤 아이디어?

다음 코드가 사용됩니다

이메일을 검색하십시오. wampserver 팝업 메뉴에서 phpSettings 옵션 -

$ato="{pop.gmail.com:995/pop3/ssl/novalidate-cert}INBOX"; 
    $auser="[email protected]"; 
    $apwd="mypwd"; 

    $mbox = imap_open($ato,$auser,$apwd,NULL,1) or die("can't connect: " . print_r(imap_errors())); // just do one login 

     $stuff=imap_check($mbox); // get and print basic information (such as # of emails) 
     var_dump($stuff); 

과 일 다음, 나는 먼저 PHP를 사용합니다 (php_openssl의 PHP 설정을 사용했다는 것을 참고합니다 (PEAR 패키지를 사용) 이메일를 전송). 다양한 게시물을 바탕으로

require_once "Mail.php"; 

    $from = '[email protected]'; 
    $to = '[email protected] '; 
    $subject = 'Hi!'; 
    $body = "Hi,\n\nHow are you?"; 

    $headers = array(
     'From' => $from, 
     'To' => $to, 
     'Subject' => $subject 
    ); 

    $smtp = Mail::factory('smtp', array(
     'host' => 'ssl://smtp.gmail.com', 
     'port' => '465', 
     'auth' => true, 
     'username' => '[email protected]', 
     'password' => 'mypwd' 
    )); 

    $mail = $smtp->send($to, $headers, $body); 

    if (PEAR::isError($mail)) { 
     echo('<p>' . $mail->getMessage() . '</p>'); 
    } else { 
     echo('<p>Message successfully sent!</p>'); 
    } 

, 나는 아파치 확장에 따라 ssl_module 및 imagemap_module 수 있도록 노력했다; php 설정 아래의 php_sockets. 그들은 아무런 효과가 없었다. php를 구성하는 것이 imap-ssl로 문제가 될 수 있음을 읽었지만, 어떻게해야 할 지 잘 모릅니다. 여기

위의 팝업 예제를 사용할 때 얻을 적절한 응답이다 (사용자 이름 및 암호 사용) - Gmail의 "보안 수준이 낮은 앱에 대한 액세스가"사용 가능 "

object(stdClass)[1] 
    public 'Date' => string 'Thu, 22 Jan 2015 01:06:37 -0500 (Eastern Standard Time)' (length=55) 
    public 'Driver' => string 'pop3' (length=4) 
    public 'Mailbox' => string '{gmail-pop.l.google.com:995/pop3/notls/ssl/novalidate-cert/user="[email protected]"}INBOX' (length=99) 
    public 'Nmsgs' => int 153 
    public 'Recent' => int 1 

을 내가 사용하지 않는 경우 {imap.gmail.com:993/imap/imap/ssl}INBOX ":"IMAP $ 아토을 = 사용 BTW

Array ([0] => [AUTH] Web login required: https://support.google.com/mail/bin/answer.py?answer=78754 [1] => Too many login failures) can't connect: 1 

"; 보안 수준이 낮은 앱 수율 :

Array ([0] => Can't open mailbox {imap.gmail.com:993/imap/imap/ssl}INBOX: invalid remote specification) can't connect: 1 

답변

0

Gmail은 단지 OAUTH2 로그인 방법은 안전한 것으로 간주합니다. 자세한 내용은 다음 문서를 참조하십시오. https://developers.google.com/gmail/xoauth2_protocol

+0

감사합니다. 이제 어려운 부분 : 이것을 imap_open ... 시퀀스로 코딩하는 법. Google에는 oauth 관련 콘텐츠를 생성하는 PHP 라이브러리가 있습니다. 그러나 그것을 사용하는 방법에 관한 문서와 예제는 분명하지 않습니다. 볼 곳에 대한 제안. –