私はGoogleアプリケーションを更新しています(Googleディレクトリサービスを使用して)。アカウントの作成に問題はありませんが、これまではGoogle Gmailサービスを使用してsendAsEmail属性を設定することができませんでした(エイリアスが「From」に表示されるように)。また、以下のスニペットのvar_dump($ createSendAsResult)は出力を生成しません。どんな助けもありがとう。ありがとう! は、ここに私のコードです:GoogleのGmail API経由でsendAsEmailを設定する方法
//Create account in Google
function createGoogleAccount($server_name, $acc_user, $acc_password)
{
$clientDir = getClientDir($server_name);
$dirService = new Google_Service_Directory($clientDir);
$userInstance = new Google_Service_Directory_User();
$nameInstance = new Google_Service_Directory_UserName();
$nameInstance -> setGivenName('Generic');
$nameInstance -> setFamilyName($acc_user);
$userInstance -> setOrgUnitPath("/generic_email");
$userInstance -> setName($nameInstance);
$userInstance -> setHashFunction("MD5");
$domain = getDomain($server_name);
$primary_email = $acc_user . '@' . $domain;
$userInstance -> setPrimaryEmail($primary_email);
$userInstance -> setPassword(hash("md5", $acc_password));
$optParams = array();
$error_msg = null;
try
{
$createUserResult = $dirService->users->insert($userInstance, $optParams);
var_dump($createUserResult);
}
catch (Google_IO_Exception $gioe)
{
$error_msg = "Error in connection: ".$gioe->getMessage();
}
catch (Google_Service_Exception $gse)
{
$error_msg = "Service Exception: ".$gse->getMessage();
}
addSendAs($server_name, $acc_user, $domain); return $error_msg;
}
function addSendAs($server_name, $acc_user, $domain)
{
$clientGmail = getClientGmail($server_name);
$gmailService = new Google_Service_Gmail($clientGmail);
$primary_email = $acc_user . '@' . $domain;
$sendAsEmail = new Google_Service_Gmail_SendAs();
$alias = '';
if (($server_name == null) || (strpos($server_name, "dev") != false))
{
$alias = '@g.';
}
else
{
$alias = '@mail.';
}
$sendAsEmail -> setSendAsEmail($acc_user . $alias . $domain);
$sendAsEmail -> setIsDefault(TRUE);
$sendAsEmail -> setIsPrimary(TRUE);
$error_msg = null;
try
{
$createSendAsResult = $gmailService->users_settings_sendAs -> create($primary_email, $sendAsEmail);
var_dump($createSendAsResult);
}
catch (Google_IO_Exception $gioe)
{
$error_msg = "Error in connection: ".$gioe->getMessage();
}
catch (Google_Service_Exception $gse)
{
$error_msg = "Service Exception: ".$gse->getMessage();
}
}
Gmail APIのTry it部分を使ってこの 'sendAsEmail'属性を設定しようとすると、エラー403'ドメイン全体の権限を委任されたサービスアカウントに限定したアクセス "が表示されました。この[スレッド](https://productforums.google.com/forum/#!topic/apps/a185jwNyDlM)で、このエラーの意味は、「初期アカウントには管理者またはスーパー管理者の委任が必要ですコントロールパネルでは、アカウントの追加権限(委任)を付与します。 – KENdi
私の最初の投稿以来、例外メッセージを出力するためのerror_log()ステートメントの追加を含むいくつかのコード変更を行いました。 (私のプログラミング経験の大部分はJavaで書かれていますが、このプロジェクトにはPHPを使用する必要がありますので、まだ慣れています)このアカウントにはドメイン全体の承認があり、アクセススコープにはGmailのすべてが含まれています。サービスの例外:{\ n "エラー":{\ n "エラー":[\ n {\ n "ドメイン": "グローバル"、\ n "理由": "禁止"、\ n " メッセージ": "代表団が[email protected]を拒否しました" \ n} \ n]、\ n ... –