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:
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;
}
}
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.