def add_message(self, filename): """Adds a new message to the database `filename` should be a path relative to the path of the open database (see :meth:`get_path`), or else should be an absolute filename with initial components that match the path of the database. The file should be a single mail message (not a multi-message mbox) that is expected to remain at its current location, since the notmuch database will reference the filename, and will not copy the entire contents of the file. :returns: On success, we return 1) a :class:`Message` object that can be used for things such as adding tags to the just-added message. 2) one of the following STATUS values: STATUS.SUCCESS Message successfully added to database. STATUS.DUPLICATE_MESSAGE_ID Message has the same message ID as another message already in the database. The new filename was successfully added to the message in the database. :rtype: 2-tuple(:class:`Message`, STATUS) :exception: Raises a :exc:`NotmuchError` with the following meaning. If such an exception occurs, nothing was added to the database. STATUS.FILE_ERROR An error occurred trying to open the file, (such as permission denied, or file not found, etc.). STATUS.FILE_NOT_EMAIL The contents of filename don't look like an email message. STATUS.READ_ONLY_DATABASE Database was opened in read-only mode so no message can be added. STATUS.NOT_INITIALIZED The database has not been initialized. """ # Raise a NotmuchError if not initialized self._verify_initialized_db() msg_p = c_void_p() status = nmlib.notmuch_database_add_message(self._db, filename, byref(msg_p)) if not status in [STATUS.SUCCESS,STATUS.DUPLICATE_MESSAGE_ID]: raise NotmuchError(status) #construct Message() and return msg = Message(msg_p, self) return (msg, status)
def add_message(self, filename, sync_maildir_flags=False): """Adds a new message to the database :param filename: should be a path relative to the path of the open database (see :meth:`get_path`), or else should be an absolute filename with initial components that match the path of the database. The file should be a single mail message (not a multi-message mbox) that is expected to remain at its current location, since the notmuch database will reference the filename, and will not copy the entire contents of the file. :param sync_maildir_flags: If the message contains Maildir flags, we will -depending on the notmuch configuration- sync those tags to initial notmuch tags, if set to `True`. It is `False` by default to remain consistent with the libnotmuch API. You might want to look into the underlying method :meth:`Message.maildir_flags_to_tags`. :returns: On success, we return 1) a :class:`Message` object that can be used for things such as adding tags to the just-added message. 2) one of the following :attr:`STATUS` values: :attr:`STATUS`.SUCCESS Message successfully added to database. :attr:`STATUS`.DUPLICATE_MESSAGE_ID Message has the same message ID as another message already in the database. The new filename was successfully added to the list of the filenames for the existing message. :rtype: 2-tuple(:class:`Message`, :attr:`STATUS`) :exception: Raises a :exc:`NotmuchError` with the following meaning. If such an exception occurs, nothing was added to the database. :attr:`STATUS`.FILE_ERROR An error occurred trying to open the file, (such as permission denied, or file not found, etc.). :attr:`STATUS`.FILE_NOT_EMAIL The contents of filename don't look like an email message. :attr:`STATUS`.READ_ONLY_DATABASE Database was opened in read-only mode so no message can be added. :attr:`STATUS`.NOT_INITIALIZED The database has not been initialized. """ self._assert_db_is_initialized() msg_p = c_void_p() status = nmlib.notmuch_database_add_message(self._db, _str(filename), byref(msg_p)) if not status in [STATUS.SUCCESS, STATUS.DUPLICATE_MESSAGE_ID]: raise NotmuchError(status) #construct Message() and return msg = Message(msg_p, self) #automatic sync initial tags from Maildir flags if sync_maildir_flags: msg.maildir_flags_to_tags() return (msg, status)
def add_message(self, filename, sync_maildir_flags=False): """Adds a new message to the database :param filename: should be a path relative to the path of the open database (see :meth:`get_path`), or else should be an absolute filename with initial components that match the path of the database. The file should be a single mail message (not a multi-message mbox) that is expected to remain at its current location, since the notmuch database will reference the filename, and will not copy the entire contents of the file. :param sync_maildir_flags: If the message contains Maildir flags, we will -depending on the notmuch configuration- sync those tags to initial notmuch tags, if set to `True`. It is `False` by default to remain consistent with the libnotmuch API. You might want to look into the underlying method :meth:`Message.maildir_flags_to_tags`. :returns: On success, we return 1) a :class:`Message` object that can be used for things such as adding tags to the just-added message. 2) one of the following :attr:`STATUS` values: :attr:`STATUS`.SUCCESS Message successfully added to database. :attr:`STATUS`.DUPLICATE_MESSAGE_ID Message has the same message ID as another message already in the database. The new filename was successfully added to the list of the filenames for the existing message. :rtype: 2-tuple(:class:`Message`, :attr:`STATUS`) :exception: Raises a :exc:`NotmuchError` with the following meaning. If such an exception occurs, nothing was added to the database. :attr:`STATUS`.FILE_ERROR An error occurred trying to open the file, (such as permission denied, or file not found, etc.). :attr:`STATUS`.FILE_NOT_EMAIL The contents of filename don't look like an email message. :attr:`STATUS`.READ_ONLY_DATABASE Database was opened in read-only mode so no message can be added. """ self._assert_db_is_initialized() msg_p = c_void_p() status = nmlib.notmuch_database_add_message(self._db, _str(filename), byref(msg_p)) if not status in [STATUS.SUCCESS, STATUS.DUPLICATE_MESSAGE_ID]: raise NotmuchError(status) #construct Message() and return msg = Message(msg_p, self) #automatic sync initial tags from Maildir flags if sync_maildir_flags: msg.maildir_flags_to_tags() return (msg, status)