libs/google/gmail.py (106 lines of code) (raw):

import json from google.controller import GoogleApiController class GoogleGmailApi(GoogleApiController): def __init__(self, oauth): self.oauth = oauth self.service = self._get_service("gmail", "v1") def set_ooo_msg(self, user_id, text): """ Sets a vacation responder for the user. :param user_id: userId :return: bool """ vacation_settings = { 'enableAutoReply': True, 'responseBodyHtml': text, 'restrictToDomain': False, } try: r = json.loads(self.call_google_api(service=self.service, api_resource="users.settings", api_method="updateVacation", response_field="enableAutoReply", userId=user_id, body=vacation_settings)) return r except(ValueError, KeyError, TypeError): return False def is_forwarding_address(self, user_id, fwd_email): """ Checks whether an address is registered and verified for mail forwarding. :param user_id: userId :param email_address: emailAddress :return: bool """ try: r = json.loads(self.call_google_api(service=self.service, api_resource="users.settings.forwardingAddresses", api_method="get", response_field="verificationStatus", userId=user_id, forwardingEmail=fwd_email)) if r == "accepted": return True else: return False except(ValueError, KeyError, TypeError): return False def create_forwarding_address(self, user_id, fwd_email): """ Creates mail forwarding for a user. :param user_id: userId :param fwd_email: emailAddress :return: bool """ forwarding_settings = { 'forwardingEmail': fwd_email, 'verificationStatus': 'accepted' } try: r = json.loads(self.call_google_api(service=self.service, api_resource="users.settings.forwardingAddresses", api_method="create", response_field="verificationStatus", userId=user_id, body=forwarding_settings)) if r == "accepted": return True else: return False except(ValueError, TypeError, KeyError): return False def set_mail_forwarding(self, user_id, fwd_email): """ Enables mail forwarding for the user. :param user_id: userId :param fwd_email: emailAddress :return: bool """ if not self.is_forwarding_address(user_id=user_id, fwd_email=fwd_email): self.create_forwarding_address(user_id=user_id, fwd_email=fwd_email) forwarding_settings = { 'emailAddress': fwd_email, 'enabled': True, 'disposition': 'leaveInInbox', } try: r = json.loads(self.call_google_api(service=self.service, api_resource="users.settings", api_method="updateAutoForwarding", response_field="enabled", userId=user_id, body=forwarding_settings)) return r except(ValueError, TypeError, KeyError): return False def disable_pop(self, user_id): """ Disables POP for the user. :param user_id: :return: bool Note: If accessWindow=disabled, then POP is disabled. """ pop_setting = { 'accessWindow': 'disabled' } try: r = json.loads(self.call_google_api(service=self.service, api_resource="users.settings", api_method="updatePop", response_field="accessWindow", userId=user_id, body=pop_setting)) if r == "disabled": return True else: return False except(ValueError, KeyError, TypeError): return False def disable_imap(self, user_id): """ Disables IMAP for the user. :param user_id: :return: bool Note: If enabled=False, then IMAP is disabled. """ imap_setting = { 'enabled': 'False' } try: r = json.loads(self.call_google_api(service=self.service, api_resource="users.settings", api_method="updateImap", response_field="enabled", userId=user_id, body=imap_setting)) if r is False: return True else: return False except(ValueError, KeyError, TypeError): return False