importcom.google.api.client.googleapis.json.GoogleJsonError;importcom.google.api.client.googleapis.json.GoogleJsonResponseException;importcom.google.api.client.http.HttpRequestInitializer;importcom.google.api.client.http.javanet.NetHttpTransport;importcom.google.api.client.json.gson.GsonFactory;importcom.google.api.services.gmail.Gmail;importcom.google.api.services.gmail.GmailScopes;importcom.google.api.services.gmail.model.ListSendAsResponse;importcom.google.api.services.gmail.model.SendAs;importcom.google.auth.http.HttpCredentialsAdapter;importcom.google.auth.oauth2.GoogleCredentials;importjava.io.IOException;/* Class to demonstrate the use of Gmail Update Signature API */publicclassUpdateSignature{/** * Update the gmail signature. * * @return the updated signature id , {@code null} otherwise. * @throws IOException - if service account credentials file not found. */publicstaticStringupdateGmailSignature()throwsIOException{/* Load pre-authorized user credentials from the environment. TODO(developer) - See https://developers.google.com/identity for guides on implementing OAuth2 for your application. */GoogleCredentialscredentials=GoogleCredentials.getApplicationDefault().createScoped(GmailScopes.GMAIL_SETTINGS_BASIC);HttpRequestInitializerrequestInitializer=newHttpCredentialsAdapter(credentials);// Create the gmail API clientGmailservice=newGmail.Builder(newNetHttpTransport(),GsonFactory.getDefaultInstance(),requestInitializer).setApplicationName("Gmail samples").build();try{SendAsprimaryAlias=null;ListSendAsResponsealiases=service.users().settings().sendAs().list("me").execute();for(SendAsalias:aliases.getSendAs()){if(alias.getIsPrimary()){primaryAlias=alias;break;}}// Updating a new signatureSendAsaliasSettings=newSendAs().setSignature("Automated Signature");SendAsresult=service.users().settings().sendAs().patch("me",primaryAlias.getSendAsEmail(),aliasSettings).execute();//Prints the updated signatureSystem.out.println("Updated signature - "+result.getSignature());returnresult.getSignature();}catch(GoogleJsonResponseExceptione){// TODO(developer) - handle error appropriatelyGoogleJsonErrorerror=e.getDetails();if(error.getCode()==403){System.err.println("Unable to update signature: "+e.getDetails());}else{throwe;}}returnnull;}}
importgoogle.authfromgoogleapiclient.discoveryimportbuildfromgoogleapiclient.errorsimportHttpErrordefupdate_signature():"""Create and update signature in gmail. Returns:Draft object, including updated signature. Load pre-authorized user credentials from the environment. TODO(developer) - See https://developers.google.com/identity for guides on implementing OAuth2 for the application. """creds,_=google.auth.default()try:# create gmail api clientservice=build("gmail","v1",credentials=creds)primary_alias=None# pylint: disable=E1101aliases=service.users().settings().sendAs().list(userId="me").execute()foraliasinaliases.get("sendAs"):ifalias.get("isPrimary"):primary_alias=aliasbreaksend_as_configuration={"displayName":primary_alias.get("sendAsEmail"),"signature":"Automated Signature",}# pylint: disable=E1101result=(service.users().settings().sendAs().patch(userId="me",sendAsEmail=primary_alias.get("sendAsEmail"),body=send_as_configuration,).execute())print(f'Updated signature for: {result.get("displayName")}')exceptHttpErroraserror:print(f"An error occurred: {error}")result=Nonereturnresult.get("signature")if__name__=="__main__":update_signature()