raplamailtouseronlocalhost.java

来自「Rapla是一个灵活的多用户资源管理系统。它提供的一些功能有:日历GUI」· Java 代码 · 共 85 行

JAVA
85
字号
/*--------------------------------------------------------------------------*
 | Copyright (C) 2006 Christopher Kohlhaas                                  |
 |                                                                          |
 | This program is free software; you can redistribute it and/or modify     |
 | it under the terms of the GNU General Public License as published by the |
 | Free Software Foundation. A copy of the license has been included with   |
 | these distribution in the COPYING file, if not go to www.fsf.org         |
 |                                                                          |
 | As a special exception, you are granted the permissions to link this     |
 | program with every library, which license fulfills the Open Source       |
 | Definition as published by the Open Source Initiative (OSI).             |
 *--------------------------------------------------------------------------*/
package org.rapla.plugin.mail.internal;

import java.io.IOException;
import java.io.OutputStream;
import java.text.ParseException;
import java.util.Map;

import org.rapla.components.mail.MailException;
import org.rapla.components.mail.MailInterface;
import org.rapla.entities.User;
import org.rapla.entities.configuration.Preferences;
import org.rapla.facade.ClientFacade;
import org.rapla.facade.RaplaComponent;
import org.rapla.framework.RaplaContext;
import org.rapla.framework.RaplaException;
import org.rapla.plugin.mail.MailPlugin;
import org.rapla.plugin.mail.MailToUserInterface;
import org.rapla.server.RemoteService;
import org.rapla.server.RemoteSession;

public class RaplaMailToUserOnLocalhost extends RaplaComponent implements MailToUserInterface,  RemoteService
{
        RemoteSession session;

        public RaplaMailToUserOnLocalhost( RaplaContext context) throws RaplaException {
            super( context );
        }

        public void setSession ( RemoteSession session) {
        	this.session = session;
        }

        public void sendMail(String userName,String subject, String body) throws RaplaException {
            User recipientUser = getQuery().getUser( userName );
            // O.K. We need to generate the mail
            String recipientEmail = recipientUser.getEmail();
            if (recipientEmail == null || recipientEmail.trim().length() == 0) {
                getLogger().warn("No email adress specified for user "
                                 + recipientUser.getUsername()
                                 + " Can't send mail.");
                return;
            }


            final MailInterface mail = (MailInterface)getContext().lookup(MailInterface.ROLE);
            ClientFacade facade = (ClientFacade)  getContext().lookup(ClientFacade.ROLE);
            Preferences prefs = facade.getPreferences( null);
            final String defaultSender = prefs.getEntryAsString( MailPlugin.DEFAULT_SENDER_ENTRY, "rapla");
            try {
                mail.sendMail( defaultSender, recipientEmail,subject, body);
            } catch (MailException ex) {
                throw new RaplaException( ex );
            }
            if ( session != null) {
                session.getLogger().info("Email send to user " + userName);
            }

        }

        public void remoteMethodCall( String methodName, Map args, OutputStream out ) throws RaplaException, IOException, ParseException
        {
           if (SEND_MAIL.is( methodName ))
           {
               String username = SEND_MAIL.value( args, 0);
               String subject= SEND_MAIL.value( args, 1);
               String body= SEND_MAIL.value( args, 2);
               sendMail( username, subject, body);
           }
            
        }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?