001    package com.hs.mail.mailet;
002    
003    import java.io.FileInputStream;
004    import java.io.IOException;
005    
006    import com.hs.mail.imap.mailbox.MailboxManager;
007    import com.hs.mail.imap.user.UserManager;
008    import com.hs.mail.smtp.message.MailAddress;
009    import com.hs.mail.smtp.message.Recipient;
010    import com.hs.mail.smtp.message.SmtpMessage;
011    import com.hs.mail.util.MailUtils;
012    
013    public class DefaultMailetContext implements MailetContext {
014            
015            private MailboxManager mailboxManager = null;
016            private UserManager userManager = null;
017            
018            public MailboxManager getMailboxManager() {
019                    return mailboxManager;
020            }
021    
022            public void setMailboxManager(MailboxManager manager) {
023                    this.mailboxManager = manager;
024            }
025    
026            public UserManager getUserManager() {
027                    return userManager;
028            }
029    
030            public void setUserManager(UserManager manager) {
031                    this.userManager = manager;
032            }
033    
034            public void sendMail(String sender, String[] recipients, SmtpMessage msg)
035                            throws IOException {
036                    SmtpMessage message = prepare(sender, recipients);
037                    try {
038                            message.setContent(new FileInputStream(msg.getDataFile()));
039                            message.store();
040                            message.createTrigger();
041                    } catch (IOException e) {
042                            message.dispose();
043                    }
044            }
045            
046            private SmtpMessage prepare(String sender, String[] recipients) {
047                    SmtpMessage message = new SmtpMessage(new MailAddress(sender, false));
048                    for (String recipient : recipients) {
049                            message.addRecipient(new Recipient(recipient, false));
050                    }
051                    return message;
052            }
053            
054            public void storeMail(long soleRecipientID, String destination,
055                            SmtpMessage msg) throws IOException {
056                    mailboxManager.addMessage(soleRecipientID, msg.getMailMessage(),
057                                    MailUtils.encodeMailbox(destination));
058            }
059            
060    }