001 package de.deepamehta.plugins.mail.service; 002 003 import java.io.IOException; 004 import java.io.UnsupportedEncodingException; 005 import java.util.Collection; 006 import java.util.List; 007 008 import org.apache.commons.mail.EmailException; 009 010 import de.deepamehta.core.Association; 011 import de.deepamehta.core.Topic; 012 import de.deepamehta.core.service.ClientState; 013 import de.deepamehta.core.service.PluginService; 014 import de.deepamehta.plugins.mail.Mail; 015 import de.deepamehta.plugins.mail.RecipientType; 016 import de.deepamehta.plugins.mail.StatusReport; 017 018 public interface MailService extends PluginService { 019 020 /** 021 * Returns parent of each search type. 022 * 023 * Parent types must include at least one email address. 024 * 025 * @return parent search types. 026 */ 027 Collection<Topic> getSearchParentTypes(); 028 029 /** 030 * Update or create a mail recipient association. 031 * 032 * @param mailId 033 * ID of a mail topic. 034 * @param addressId 035 * Email address of recipient. 036 * @param type 037 * Recipient type URI or null to choose the configured default. 038 * @param clientState 039 * Optional cookie or null. 040 * @return Recipient association with email address and recipient type. 041 */ 042 Association associateRecipient(long mailId, long addressId,// 043 RecipientType type, ClientState clientState); 044 045 /** 046 * Update or create a mail sender association. 047 * 048 * @param topicId 049 * ID of a mail or configuration topic. 050 * @param addressId 051 * Email address of sender. 052 * @param clientState 053 * Optional cookie or null. 054 * @return Sender association with email address. 055 */ 056 Association associateSender(long topicId, long addressId, ClientState clientState); 057 058 /** 059 * Associate all valid email addresses of each recipient. 060 * 061 * @param mailId 062 * @param recipients 063 * @param clientState 064 */ 065 void associateValidatedRecipients(long mailId, List<Topic> recipients, ClientState clientState); 066 067 /** 068 * Sends a HTML mail. 069 * 070 * @param mail 071 * Mail topic. 072 * @return Sent mail topic. 073 */ 074 StatusReport send(Mail mail) throws UnsupportedEncodingException, EmailException, IOException; 075 }