<?php

/**
 * OpenKM, Open Knowledge Management System S.L.  (http://www.openkm.com)
 * Copyright (c) 2006-2023
 *
 * No bytes were intentionally harmed during the development of this application.
 *
 * This program is commercial software; you can use it under the terms of the
 * EULA - OpenKM SDK End User License Agreement as published by OpenKM Knowledge Management System S.L.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * EULA - OpenKM SDK End User License Agreement for more details:
 * http://docs.openkm.com/kcenter/view/licenses/eula-openkm-sdk-end-user-license-agreement.html
 */

namespace openkm\definition;

use openkm\bean\Mail;

/**
 * BaseMail
 *
 * @author sochoa
 */
interface BaseMail {

    public function createMail(Mail $mail);

    public function getMailProperties($mailId);

    public function deleteMail($mailId);

    public function renameMail($mailId, $newName);

    public function moveMail($mailId, $dstId);

    public function getMailChildren($fldId);

    public function isValidMail($mailId);

    public function getMailPath($uuid);

    public function createAttachment($mailId, $docName, $content);

    public function deleteAttachment($mailId, $docId);

    public function getAttachments($mailId);

    public function purgeMail($mailId);

    public function copyMail($mailId, $dstId, $newName);

    public function extendedMailCopy($mailId, $dstId, $categories, $keywords, $propertyGroups, $notes, $wiki, $newName);    

    public function sendMailWithAttachments($from, $toRecipients, $ccRecipients, $bccRecipients, $subject, $body, $docsId, $dstId);

    public function importEml($dstId, $title, $content);

    public function importMsg($dstId, $title, $content);

    public function setMailTitle($mailId, $title);
    
    public function sendMail($subject, $body, $recipients = []);
}
