php - 如何在 email 中使用非 ASCII 字符串 Subject:, To: etc in PHP

请告诉我,我使用 curl php email (gmail api) 发送。内容类型是消息/rfc822。发送时如何在 email 的主题中使用西里尔字母。在字母的正文中,西里尔字母正常显示,在字母的主题中显示为符号。 ПривеÑ。

$access_token = "***";

$message = "To: ".addslashes($_POST['to'])."\r\nSubject: ".addslashes($_POST['subject'])."\r\n\r\n".addslashes($_POST['message']);

$ch = curl_init('https://www.googleapis.com/upload/gmail/v1/users/me/messages/send'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Bearer ".$access_token, 'Accept: application/json', 'Content-Type: message/rfc822; charset=utf-8'));    
curl_setopt($ch, CURLOPT_POSTFIELDS, $message);
$data = curl_exec($ch);

回答1

您需要使用标准的 php 函数:

mb_encode_mimeheader($_POST['subject'], "UTF-8");

相似文章