/* * Copyright (C) 2003-2007 eXo Platform SAS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * 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 * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see. */ package org.exoplatform.mail.service.impl; import org.exoplatform.container.xml.InitParams; import org.exoplatform.mail.service.Account; import org.exoplatform.mail.service.Folder; import org.exoplatform.mail.service.MailService; import org.exoplatform.mail.service.Utils; import org.exoplatform.services.organization.User; import org.exoplatform.services.organization.UserEventListener; /** * @author : Huu-Dung Kieu * huu-dung.kieu@bull.be * * This is a plugin running every time a new user is created. * The goal is to create a default mail account for each user. * The plugin configuration is defined in the portal/conf/cs/cs-plugin-configuration.xml file. * */ public class NewUserListener extends UserEventListener { private MailService mservice_; final static public String FD_INBOX = "Inbox".intern(); final static public String FD_DRAFTS = "Drafts".intern(); final static public String FD_SENT = "Sent".intern(); final static public String FD_SPAM = "Spam".intern(); final static public String FD_TRASH = "Trash".intern(); final static public String[] defaultFolders_ = { FD_INBOX, FD_DRAFTS, FD_SENT, FD_SPAM, FD_TRASH }; String protocol; boolean isSSL; String incomingHost; String incomingPort; String incomingFolder; String outgoingHost; String outgoingPort; public NewUserListener(MailService mservice, InitParams params) throws Exception { mservice_ = mservice; // parameters defined in the plugin configuration protocol = params.getValueParam("protocol").getValue(); String ssl = params.getValueParam("ssl").getValue(); isSSL = (ssl != null) && ssl.equalsIgnoreCase("true"); incomingHost = params.getValueParam("incomingServer").getValue(); incomingPort = params.getValueParam("incomingPort").getValue(); incomingFolder = params.getValueParam("incomingFolder").getValue(); outgoingHost = params.getValueParam("outgoingServer").getValue(); outgoingPort = params.getValueParam("outgoingPort").getValue(); } public void postSave(User user, boolean isNew) throws Exception { if (!isNew) return; String fullName = user.getFullName(); String email = user.getEmail(); // Once eXo is connected to LDAP users, the password will be correct !!! String password = user.getPassword(); Account acc = new Account(); String incomingUserName = email; acc.setLabel(fullName); acc.setDescription(""); acc.setUserDisplayName(fullName); acc.setEmailAddress(email); acc.setEmailReplyAddress(email); acc.setSignature(""); acc.setIncomingUser(incomingUserName); acc.setIncomingPassword(password); acc.setIsSavePassword(true); acc.setIncomingHost(incomingHost); acc.setIncomingPort(incomingPort); acc.setProtocol(protocol); acc.setIncomingSsl(isSSL); acc.setIncomingFolder(incomingFolder); acc.setServerProperty(Utils.SVR_SMTP_USER, incomingUserName); acc.setOutgoingHost(outgoingHost); acc.setOutgoingPort(outgoingPort); String username = user.getUserName(); String accId = acc.getId(); String folderId = null; Folder folder = null; try { mservice_.createAccount(username, acc); for (String folderName : defaultFolders_) { folderId = Utils.generateFID(accId, folderName, false); folder = mservice_.getFolder(username, accId, folderId); if (folder == null) { folder = new Folder(); folder.setId(folderId); folder.setName(folderName); folder.setPersonalFolder(false); mservice_.saveFolder(username, accId, folder); } } } catch (Exception e) { e.printStackTrace(); } } }