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

📄 pop3inboxprovider.java

📁 CRM源码This file describes some issues that should be implemented in future and how it should be imple
💻 JAVA
字号:
/* * Copyright 2006-2007 Queplix Corp. * * Licensed under the Queplix Public License, Version 1.1.1 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.queplix.com/solutions/commercial-open-source/queplix-public-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 com.queplix.core.modules.inbox.utils;import com.queplix.core.utils.DateHelper;import javax.mail.FetchProfile;import javax.mail.Message;import javax.mail.MessagingException;import java.text.ParseException;import java.util.Date;import java.util.TimeZone;/** * POP3 Inbox Provider. * @author [ALB] Baranov Andrey * @version $Revision: 1.3 $ $Date: 2006/06/04 00:15:09 $ */public class POP3InboxProvider    extends AbstractInboxProvider {    // ----------------------------------------------------- constants    /** Mail date header patterns. */    protected static final String XOriginalArrivalTimePattern =        "d MMM yyyy HH:mm:ss.S (z)";    protected static final String[] ReceivedPatterns = {        "EEE, d MMM yyyy HH:mm:ss Z",        "EEE, d MMM yyyy HH:mm:ss Z (z)"    };    // ----------------------------------------------------- getters    /*     * No javadoc     * @see InboxProvider#getJavaMailProto     */    public String getJavaMailProto() {        return "pop3";    }    // ----------------------------------------------------- public methods    /*     * No javadoc     * @see AbstractInboxProvider#getResultSet     */    public ResultSet getResultSet( MessageFilter filter )        throws MessagingException {        if( rs == null ) {            Message[] messages = null;            if( folder.getMessageCount() > 0 ) {                messages = folder.getMessages();                /** @todo [alb] analyse it */                FetchProfile fp = new FetchProfile();                fp.add( FetchProfile.Item.FLAGS );                fp.add( "X-OriginalArrivalTime" );                fp.add( "Received" );                folder.fetch( messages, fp );            }            // Create new ResultSet.            rs = new InboxResultSet( messages );            rs.setMessageFilter( filter );        }        return rs;    }    /*     * No javadoc     * @see InboxProvider#getUID     */    public String getUID( Message message )        throws MessagingException {    	if( folder instanceof com.sun.mail.pop3.POP3Folder ) {            com.sun.mail.pop3.POP3Folder pf = ( com.sun.mail.pop3.POP3Folder ) folder;            try {                return pf.getUID( message );            } catch( Exception ex ) {                // Ignore any POP3 exceptions.                return null;            }        } else {            return null;        }    }    /*     * No javadoc     * @see InboxProvider#getServerDate     */    public Date getServerDate( Message message )        throws MessagingException {        Date d = null;        // 1. Use following header:        // X-OriginalArrivalTime: 16 Sep 2002 20:02:18.0515 (UTC)        if( d == null ) {            String[] ss = message.getHeader( "X-OriginalArrivalTime" );            if( ss != null && ss.length > 0 ) {                String s = ss[0];                DEBUG( logName + "Found 'X-OriginalArrivalTime' = '" + s + "'" );                // getting first part                int pos = s.indexOf( ")" );                if( pos > 0 ) {                    String dateS = s.substring( 0, pos + 1 ).trim();                    try {                        d = DateHelper.parseDate( dateS, XOriginalArrivalTimePattern );                    } catch( ParseException ex ) {                        String msg = "Cannot parse date from 'X-OriginalArrivalTime' header: " +                            dateS + " using pattern: " + XOriginalArrivalTimePattern;                        publisher.WARN( msg, new Long( account.getAccountID() ) );                        WARN( logName + msg );                    }                }            }        }        // 2.Use following headers:        // Received: by localhost        //	            id <01C61C6F.68EC5FFE@localhost>; Wed, 18 Jan 2006 15:40:25 -050        // Received: id 949608F0F3; Mon, 23 Jan 2006 23:53:09 +0300        if( d == null ) {            String[] ss = message.getHeader( "Received" );            if( ss != null && ss.length > 0 ) {                for( int i = 0; i < ss.length; i++ ) {                    String s = ss[i];                    DEBUG( logName + "Found 'Received' = '" + s + "'" );                    // getting last part                    int pos = s.lastIndexOf( ";" );                    if( pos < 0 ) {                        continue;                    }                    String dateS = s.substring( pos + 1 ).trim();                    // apply patterns in cycle                    int patterns = ReceivedPatterns.length;                    for( int j = 0; j < patterns; j++ ) {                        String pattern = ReceivedPatterns[j];                        try {                            d = DateHelper.parseDate( dateS, pattern );                            break;                        } catch( ParseException ex ) {                            if( j == patterns - 1 ) {                                String msg = "Cannot parse date from 'Received' header: " +                                    dateS + " using pattern " + pattern;                                publisher.WARN( msg, new Long( account.getAccountID() ) );                                WARN( logName + msg );                            }                        }                    } // for                } // for            } // if        } // if        // If header value not found - use 'Sent Date'.        if( d == null ) {            d = message.getSentDate();        }        // Convert to system.        if( d != null ) {            d = new Date( DateHelper.toSystem( d.getTime(), TimeZone.getDefault() ) );        }        DEBUG( logName + " found date = " + d );        return d;    }    /*     * No javadoc     * @see InboxProvider#getMessage     */    public Message getMessage( String uid )        throws MessagingException {        long l;        try {            l = Long.parseLong( uid );        } catch( NumberFormatException ex ) {            ERROR( ex );            return null;        }        if( folder instanceof com.sun.mail.pop3.POP3Folder ) {            // Use SingleMessageFilter and #getResultSet.            SingleMessageFilter filter = new SingleMessageFilter( uid, this );            ResultSet rs = getResultSet( filter );            return rs.next();        } else {            return null;        }    }}

⌨️ 快捷键说明

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