我正在尝试弄清楚如何使用Gmail API从邮件中获取电子邮件地址,但似乎在发送数据时,实际的电子邮件地址已经脱离,仅留下此人的姓名。以下是我得到的应该有用户电子邮件地址的响应示例(格式化为PHP数组):
Array ( [0] => Array ( [name] => To [value] => John Smith ) )
但是,当我在Gmail API文档页面上尝试时,我会得到这样的回复(格式化为JSON):
"headers": [
{
"name": "To",
"value": "John Smith \u003cjohnsmith@test.com\u003e"
}
]
现在,我不确定发生了什么,但似乎反复冲突以及它们之间的所有内容,包括我需要的电子邮件地址,在我有机会获得它之前就被转义了。有没有办法避免这种情况,以便我可以从响应中获取电子邮件地址?这是我现在使用的当前代码:
require_once __DIR__ . '/google-api-php-client/src/Google/autoload.php';
$client_email = "myclientemail";
$private_key = file_get_contents('myprivatekey');
$scopes = array('https://www.googleapis.com/auth/gmail.modify');
$userId = 'myuserid';
$credentials = new Google_Auth_AssertionCredentials(
$client_email,
$scopes,
$private_key,
'notasecret', // Default P12 password
'http://oauth.net/grant_type/jwt/1.0/bearer', // Default grant type
$userId
);
$client = new Google_Client();
$client->setAssertionCredentials($credentials);
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion();
}
$service = new Google_Service_Gmail($client);
$opt_param = array(
'format'=>'metadata',
'metadataHeaders' => 'To'
);
$message = $service->users_messages->get($userId, "messageid", $opt_param);
print_r($message);