Auto-reply requires a response subject and body, either HTML or plain text. It
can be enabled indefinitely, or limited to a defined period of time. You can
also restrict auto-reply to known contacts or domain members.
Example of setting an auto-reply for a fixed period of time, restricting replies
to users in the same domain:
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.VacationSettings;importcom.google.auth.http.HttpCredentialsAdapter;importcom.google.auth.oauth2.GoogleCredentials;importjava.io.IOException;importjava.time.LocalDateTime;importjava.time.ZoneOffset;importjava.time.ZonedDateTime;/* Class to demonstrate the use of Gmail Enable Auto Reply API*/publicclassEnableAutoReply{/** * Enables the auto reply * * @return the reply message and response metadata. * @throws IOException - if service account credentials file not found. */publicstaticVacationSettingsautoReply()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{// Enable auto reply by restricting domain with start time and end timeVacationSettingsvacationSettings=newVacationSettings().setEnableAutoReply(true).setResponseBodyHtml("I am on vacation and will reply when I am back in the office. Thanks!").setRestrictToDomain(true).setStartTime(LocalDateTime.now().toEpochSecond(ZoneOffset.from(ZonedDateTime.now()))*1000).setEndTime(LocalDateTime.now().plusDays(7).toEpochSecond(ZoneOffset.from(ZonedDateTime.now()))*1000);VacationSettingsresponse=service.users().settings().updateVacation("me",vacationSettings).execute();// Prints the auto-reply response bodySystem.out.println("Enabled auto reply with message : "+response.getResponseBodyHtml());returnresponse;}catch(GoogleJsonResponseExceptione){// TODO(developer) - handle error appropriatelyGoogleJsonErrorerror=e.getDetails();if(error.getCode()==403){System.err.println("Unable to enable auto reply: "+e.getDetails());}else{throwe;}}returnnull;}}
fromdatetimeimportdatetime,timedeltaimportgoogle.authfromgoogleapiclient.discoveryimportbuildfromgoogleapiclient.errorsimportHttpErrorfromnumpyimportlongdefenable_auto_reply():"""Enable auto reply. Returns:Draft object, including reply message and response meta data. 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)epoch=datetime.utcfromtimestamp(0)now=datetime.now()start_time=(now-epoch).total_seconds()*1000end_time=(now+timedelta(days=7)-epoch).total_seconds()*1000vacation_settings={"enableAutoReply":True,"responseBodyHtml":("I am on vacation and will reply when I am ""back in the office. Thanks!"),"restrictToDomain":True,"startTime":long(start_time),"endTime":long(end_time),}# pylint: disable=E1101response=(service.users().settings().updateVacation(userId="me",body=vacation_settings).execute())print(f"Enabled AutoReply with message: {response.get('responseBodyHtml')}")exceptHttpErroraserror:print(f"An error occurred: {error}")response=Nonereturnresponseif__name__=="__main__":enable_auto_reply()
To disable auto-reply, update the resource and set enableAutoReply to
false. If an endTime is configured, auto-reply will automatically disable
once the specified time has passed.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-12-19 UTC."],[[["Configure scheduled auto-replies for a Gmail account using the Gmail API's Settings resource."],["Auto-replies require a subject and body, can be time-limited, and restricted to specific contacts or domains."],["Provided code samples (Java and Python) demonstrate enabling auto-reply for a fixed duration and within a domain."],["Disable auto-reply by setting `enableAutoReply` to `false` or letting the `endTime` automatically deactivate it."]]],[]]