⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rcptcommand.java

📁 Java Mail Server JAVA编写的邮件服务器
💻 JAVA
字号:
/**************************************************************** * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.     * *                                                              * * Copyright 2008 Jun Li(SiChuan University, the School of      * * Software Engineering). All rights reserved.                  * *                                                              * * Licensed to the JMS under one  or more contributor license   * * agreements.  See the LICENCE file  distributed with this     * * work for additional information regarding copyright          * * ownership.  The JMS licenses this file  you may not use this * * file except in compliance  with the License.                 * *                                                              * * Unless required by applicable law or agreed to in writing,   * * software distributed under the License is distributed on an  * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       * * KIND, either express or implied.  See the License for the    * * specific language governing permissions and limitations      * * under the License.                                           * ****************************************************************/package org.jpxx.mail.Smtp.Command;import java.util.ArrayList;import java.util.HashMap;import org.jpxx.mail.Exception.ArgumentException;import org.jpxx.mail.Smtp.SmtpCommands;import org.jpxx.mail.Service.CommandHandler;import org.jpxx.mail.Util.EmailAddress;import org.jpxx.mail.Exception.InvalidEmailAddressException;import org.jpxx.mail.Service.Session;import org.jpxx.mail.User.UserHandler;import org.jpxx.mail.Domain.DomainHandler;/** * Handle RCPT Command. *  * <p>This command is used to identify an individual recipient of the mail  * data; multiple recipients are specified by multiple use of this  * command. The argument field contains a forward-path and may contain  * optional parameters. </p> *  * @author Jun Li * @version $Revision: 0.0.1 $, $Date: 2008/04/24 22:07:00 $ *  */public class RcptCommand implements CommandHandler, SmtpCommands {    /**     * @see org.jpxx.mail.Service.CommandHandler#onCommand(Session session)     * @param session The Session of Server and client     */    public void onCommand(Session session) {        if (session.getLastAction() == MAIL || session.getLastAction() == RCPT) {            String argument = null;            try {                argument = session.getCommandLine().getArgument();            } catch (ArgumentException ae) {                argument = null;            }            if (argument == null || argument.equals("")) {                session.writeResponse("500 Syntax error");            } else if (!argument.toUpperCase().startsWith("TO:")) {                session.writeResponse("501 Syntax error in arguments");            } else {                String to = EmailAddress.grabMailAddress(argument);                try {                    EmailAddress ea = new EmailAddress(to);                    DomainHandler dc = new DomainHandler();                    /**                     * Local user                     */                    if (dc.isExist(ea.getDomain())) {                        UserHandler uh = new UserHandler();                        if (!uh.checkUser(ea)) {                            session.writeResponse("550 No such user");                        } else {                            session.setLastAction(RCPT);                            session.writeResponse("250 OK");                        }                    } else {                        /**                         * User not in local server                         */                        session.setLastAction(RCPT);                        session.writeResponse("250 OK");                    }                    HashMap map = session.getOperation();                    ArrayList al = null;                    if (map.get("RCPT_TO") == null) {                        al = new ArrayList();                    } else {                        al = (ArrayList) map.get("RCPT_TO");                    }                    al.add(to);                    session.addOperation("RCPT_TO", al);                } catch (InvalidEmailAddressException e) {                    session.writeResponse("553 Mailbox syntax incorrect");                }            }        } else {            session.writeResponse("503 RCPT Not allowed here.");        }    }}

⌨️ 快捷键说明

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