1

我正在尝试通过在 wampserver 2.4 下运行的 php 访问 gmail。为简单起见,这是来自本地主机(实际应用程序要复杂得多)。

遵循一些标准示例,我可以通过 gmail 接收(通过 pop 或 imap)和发送(通过 smtp)电子邮件——但前提是启用了 gmail 的“不太安全的应用程序”功能(https://www.google .com/settings/security/lesssecureapps)。当然,必须首先在 gmail 设置页面上启用 pop 和/或 imap ( https://mail.google.com/mail/u/0/#settings/fwdandpop )

虽然这可行,但我希望 php 使用“更安全的技术”——即 SSL 和 TLS。有任何想法吗?

使用以下代码:

用于检索电子邮件。

   $ato="{pop.gmail.com:995/pop3/ssl/novalidate-cert}INBOX";
    $auser="myaddress@gmail.com";
    $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);

和发送电子邮件(使用 PEAR 包) 请注意,为了使以下工作,我必须首先启用 php_openssl php 设置(使用 wampserver 弹出菜单下的 php - phpSettings 选项)。

 require_once "Mail.php";

    $from = 'myemail@gmail.com';
    $to = 'someone@foo.org ';
     $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' => 'myemail@gmail.com',
        'password' => 'mypwd'
     ));

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

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

根据各种帖子,我尝试在 apache 扩展下启用 ssl_module 和 imagemap_module;和 php 设置下的 php_sockets。他们没有任何区别。我已经读过使用 imap-ssl 配置 php 很重要,但我不知道该怎么做。

这是我在使用上面的 pop 示例(使用我的用户名和密码)时得到的正确响应——启用 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="myemial@gmail.com"}INBOX' (length=99)
  public 'Nmsgs' => int 153
  public 'Recent' => int 1

当我禁用“不太安全的应用程序”时

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

顺便说一句:使用 IMAP $ato="{imap.gmail.com:993/imap/imap/ssl}INBOX"; 产量:

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

1 回答 1

0

Gmail 仅认为 OAUTH2 登录方法是安全的。有关详细信息,请参阅以下文章: https ://developers.google.com/gmail/xoauth2_protocol

于 2015-01-22T12:13:33.773 回答