You can use Settings to configure scheduled auto-reply for an account.
For information on how to get or update, see the Settings reference.
Configuring auto-reply
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:
Java
gmail/snippets/src/main/java/EnableAutoReply.java
import com.google.api.client.googleapis.json.GoogleJsonError; import com.google.api.client.googleapis.json.GoogleJsonResponseException; import com.google.api.client.http.HttpRequestInitializer; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.gson.GsonFactory; import com.google.api.services.gmail.Gmail; import com.google.api.services.gmail.GmailScopes; import com.google.api.services.gmail.model.VacationSettings; import com.google.auth.http.HttpCredentialsAdapter; import com.google.auth.oauth2.GoogleCredentials; import java.io.IOException; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.time.ZonedDateTime; /* Class to demonstrate the use of Gmail Enable Auto Reply API*/ public class EnableAutoReply { /** * Enables the auto reply * * @return the reply message and response metadata. * @throws IOException - if service account credentials file not found. */ public static VacationSettings autoReply() throws IOException { /* Load pre-authorized user credentials from the environment. TODO(developer) - See https://developers.google.com/identity for guides on implementing OAuth2 for your application. */ GoogleCredentials credentials = GoogleCredentials.getApplicationDefault() .createScoped(GmailScopes.GMAIL_SETTINGS_BASIC); HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(credentials); // Create the gmail API client Gmail service = new Gmail.Builder(new NetHttpTransport(), GsonFactory.getDefaultInstance(), requestInitializer) .setApplicationName("Gmail samples") .build(); try { // Enable auto reply by restricting domain with start time and end time VacationSettings vacationSettings = new VacationSettings() .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); VacationSettings response = service.users().settings() .updateVacation("me", vacationSettings).execute(); // Prints the auto-reply response body System.out.println("Enabled auto reply with message : " + response.getResponseBodyHtml()); return response; } catch (GoogleJsonResponseException e) { // TODO(developer) - handle error appropriately GoogleJsonError error = e.getDetails(); if (error.getCode() == 403) { System.err.println("Unable to enable auto reply: " + e.getDetails()); } else { throw e; } } return null; } }
Python
gmail/snippet/settings snippets/enable_auto_reply.py
from datetime import datetime, timedelta import google.auth from googleapiclient.discovery import build from googleapiclient.errors import HttpError from numpy import long def enable_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 client service = build("gmail", "v1", credentials=creds) epoch = datetime.utcfromtimestamp(0) now = datetime.now() start_time = (now - epoch).total_seconds() * 1000 end_time = (now + timedelta(days=7) - epoch).total_seconds() * 1000 vacation_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=E1101 response = ( service.users() .settings() .updateVacation(userId="me", body=vacation_settings) .execute() ) print(f"Enabled AutoReply with message: {response.get('responseBodyHtml')}") except HttpError as error: print(f"An error occurred: {error}") response = None return response if __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.