使用 Gmail 从本地主机的 php 发送邮件

Send mail using Gmail from php in localhost

我已经知道如何使用 phpmailer,但我无法发送使用 Gmail 的邮件(我在 phpmailer 中完成了所有配置,如端口、服务器名称等),因为它使用的是 OAuth 2.0,而我已经获得了我的客户 ID,但是我收到了这个错误:

 400. That’s an error.

Error: invalid_scope

Some requested scopes were invalid. {invalid=[email@gmail.com]}

Learn more

Request Details

当我尝试从 URL 连接到服务器时,我必须怎么做?

这是我有代码的文件,我将更改一些字符以保密,我希望你用这个例子告诉我如何使用它。

复制并粘贴到记事本中以使其更加清晰。

{
  "private_key_id": "c6ffd46f1@@@@@@@@@@@50@@@@@@62b620526a",
  "private_key": "-----BEGIN PRIVATE KEY-----\nMIICdwIBADA@@@@@@@@@@@@@@@@@@wggJdAgEAAoGBAJYjqzxsw9z9kdp5\ngjuqZz0vVuad574M6fTlFcLp3HdPg8y2hxl2hzW+lZPCWFDUgRgmJEWAR1Qf40ZB\nTm4FwD4mN7/YmExzjVTJ9sPHkf@@@@@@@@o7VincKg5RddvYML95Vzzz0\n1ft@@@@@@@@@@@e0CKuWeIXDKbJVAgMBAAECgYBBc4dArkGsYzZkQbhOfnjHKY3+\ntzPB@@@@@@@@@@@IDcztkeyti2M3EAu8MTXf1N9yAhQk134RxpxkQJqPbk\na5lxv+euyq@@@@@@@@@@iTyKglke8AgR3tXFWcFT1u0p6VeC3uQOskFEO4jNS\nNBbuOcVn/LbyNoB4+QJB@@@@@@@@@@@wU81o36dLz/Ad7hl4yqdWcmotEe38j1\nWa/mBBHGMm+XJFLnfnde/KNeY8a@@@@@@@@@@@@@@@@QQDA8Ej7Ho6whqAiP3d5\nO4@@@@@@@@@@@@3VCzPipDjYzZjvojqz3WRW1pTvAvRcmWWCSJSUOV2FI\npENvAk@@@@@@@@@@@@@jojJJ59QokIYFDlALIP4FiDUVnTKrbZ1JdsqXcRmm\nTzJuVi@@@@@@@@@@@@@@@@@@@@@@@Ihh91BmYFwTBfvsbhUJ8At2IqkpP\nemKr2hbUMs4yTd1IT@@@@@@@J+@@@@@@@@P8CQHVWlZPm\nm7oV9484A8NHT@@@@@@@@@@@@MpUlAbk37C45gU4xFhp1MSvNsNiO\nquDr@@@@@kitgIc\u003d\n-----END PRIVATE KEY-----\n",
  "client_email": "56@@@@@@@@5@@63-3tummk4ie@@@@@@@@@@@@fajni0sun19n@developer.gserviceaccount.com",
  "client_id": "56@@@@@@5@@63-3tu@@@@@@@@nlejapn5fajni0sun19n.apps.googleusercontent.com",
  "type": "service_account"
}

使用 pear mail library

// Pear Mail Library
require_once "Mail.php";

$from = '<from.gmail.com>';
$to = '<to.yahoo.com>';
$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' => 'johndoe@gmail.com',
        'password' => 'passwordxxx'
    ));

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

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

这是对 this question here.

的引用