亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? message.java

?? 使用java編寫的手機郵件系統
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
                addHeaderLine(name + ": " + value);            }        }        else {            if (value != null) {                setHeaderLine(i, name + ": " + value);            }            else {                removeHeaderLine(i);            }        }    }    /**     * Returns a line of the message's body by its index.     *     * @see #getBodyLineCount     * @see #setBodyLine     * @see #addBodyLine     * @see #removeBodyLine     * @see #insertBodyLine     */    public String getBodyLine(int index) {        if ((index < 0) || (index >= getBodyLineCount())) {            throw new ArrayIndexOutOfBoundsException(index);        }        return (String)lines.elementAt(headerSize + index + 1);    }    /**     * Replaces the line of the message's body at the given index.     *     * @see #getBodyLine     * @see #getBodyLineCount     * @see #addBodyLine     * @see #removeBodyLine     * @see #insertBodyLine     */    public void setBodyLine(int index, String line) {        if ((index < 0) || (index >= getBodyLineCount())) {            throw new ArrayIndexOutOfBoundsException(index);        }        lines.setElementAt(line, headerSize + index + 1);    }    /**     * Returns the number of lines in the message's body.     *     * @see #getBodyLine     * @see #setBodyLine     * @see #addBodyLine     * @see #removeBodyLine     * @see #insertBodyLine     */    public int getBodyLineCount() {        return lines.size() - headerSize - 1;    }    /**     * Adds a line to the message body, returning its index.     *     * @see #getBodyLine     * @see #getBodyLineCount     * @see #setBodyLine     * @see #removeBodyLine     * @see #insertBodyLine     */    public int addBodyLine(String line) {        lines.addElement(line);        return getBodyLineCount() - 1;    }    /**     * Inserts a new line into the message's body, at the given index.     *     * @see #getBodyLine     * @see #getBodyLineCount     * @see #setBodyLine     * @see #addBodyLine     * @see #removeBodyLine     */    public void insertBodyLine(int index, String line) {        if ((index < 0) || (index > getBodyLineCount())) {            throw new ArrayIndexOutOfBoundsException(index);        }        lines.insertElementAt(line, headerSize + index + 1);    }    /**     * Removes a line from the message's body.     *     * @see #getBodyLine     * @see #getBodyLineCount     * @see #setBodyLine     * @see #addBodyLine     * @see #insertBodyLine     */    public void removeBodyLine(int index) {        if ((index < 0) || (index >= getBodyLineCount())) {            throw new ArrayIndexOutOfBoundsException(index);        }        lines.removeElementAt(headerSize + index + 1);    }    /**     * Returns the machine-readable part of an address, that is, the part     * that is actually used in delivering the message to a recipient.     * For an address like, say,     * <pre>     *   "Joerg Pleumann" &lt;joerg@pleumann.de&gt;     * </pre>     * this would be "joerg@pleumann.de" (without the quotes).     */    public static String getMachineAddress(String address) {        int p, q;        p = address.indexOf('<');        q =  address.indexOf('>', p + 1);        if ((p != -1) && (q != -1)) return address.substring(p + 1, q);        p = address.indexOf('(');        q = address.indexOf(')', p + 1);        if ((p != -1) && (q != -1)) return address.substring(0, p).trim();        p = address.indexOf('"');        q = address.indexOf('"', p + 1);        if ((p != -1) && (q != -1)) return address.substring(0, p).trim();        return address;    }  /*         Some additional requirements from the RFC that have to be addressed         by a *real* address parser:         - Several addresses in one line, like:   addr1, addr2, addr3         - A named list of addresses like:        friends: a, b, c;         - Everything in (...) is a comment         - Everything in "..." is a literal         - Everything in <...> is a machine-readable part         - Using escape sequences \... is also allowed.   */    /**     * Returns the human-readable part of an address, that is, the part     * that usually holds the real-life name of a user. For an address     * like, say,     * <pre>     *   "Joerg Pleumann" &lt;joerg@pleumann.de&gt;     * </pre>     * this would be "Joerg Pleumann" (without the quotes).     */    public static String getDisplayAddress(String address) {        int p, q;        p = address.indexOf('"');        q = address.indexOf('"', p + 1);        if ((p != -1) && (q != -1)) return address.substring(p + 1, q);        p = address.indexOf('(');        q = address.indexOf(')', p + 1);        if ((p != -1) && (q != -1)) return address.substring(p + 1, q);        p = address.indexOf('<');        q =  address.indexOf('>', p + 1);        if ((p != -1) && (q != -1)) return address.substring(0, p).trim();        return "";    }    /**     * Returns a canonical representation of an e-mail address. It basically     * consists of the username and domain parts enclosed in angular brackets.     * It does not contain the user's realname.     * [May be removed in favour of getMachineAddress or expanded to hold     * display *and* machine address.]     */        /*        public static String getCanonicalAddress(String address) {                int p = address.indexOf('<');                int q =  address.indexOf('>', p + 1);                if ((p != -1) && (q != -1)) return address.substring(p, q + 1);                p = address.indexOf('(');                q = address.indexOf(')', p + 1);                if ((p != -1) && (q != -1)) return "<" + address.substring(0, p) + ">";                p = address.indexOf('"');                q = address.indexOf('"', p + 1);                if ((p != -1) && (q != -1)) return "<" + address.substring(0, p) + ">";                return "<" + address + ">";        }         */    /**     * Converts an integer to a string. If the result has less digits than the     * specified length, it is left-padded with zeroes. This is a helper     * method required by getCanonicalDate(). The length parameter must not     * exceed 4, the number must not exceed 9999. Since the method is used     * only internally, this should be easy to guarantee.     */    private static String intToStr(int value, int length) {        String result = Integer.toString(value);        result = "0000".substring(result.length(), length) + result;        return result;    }    /**     * Returns a formatted date. This method converts the given date/time/zone     * information into the textual format defined by RFC 822, that is, into a     * string looking like this:     * <pre>     *   Mon, 01 Jan 1970 23:59:59 GMT+1000     * </pre>     * If the timezone parameter is null, no zone information is appended to     * the result.     */    public static String getCanonicalDate(Calendar calendar, TimeZone timezone) {        String monthNames = "JanFebMarAprMayJunJulAugSepOctNovDec";        String dayNames = "SunMonTueWedThuFriSatSun";        /**         * Get the various fields from the calendar parameter.         */        int year = calendar.get(Calendar.YEAR);        int month = calendar.get(Calendar.MONTH);        int day = calendar.get(Calendar.DAY_OF_MONTH);        int weekday = calendar.get(Calendar.DAY_OF_WEEK) - 1;        int hour = calendar.get(Calendar.HOUR_OF_DAY);        int minute = calendar.get(Calendar.MINUTE);        int second = calendar.get(Calendar.SECOND);        /**         * Format the first part of the result string.         */        String result = dayNames.substring(3 * weekday, 3 * weekday + 3) + ", "        + intToStr(day, 2) + " "        + monthNames.substring(3 * month, 3 * month + 3) + " "        + intToStr(year, 4) + " "        + intToStr(hour, 2) + ":"        + intToStr(minute, 2) + ":"        + intToStr(second, 2);        /**         * If we have a timezone parameter, append the difference to GMT (=UCT)         * including possible daylight savings to the string. The first two digits         * hold hours, the next two digits hold minutes. So, GMT+0130 means         * that local time is GMT plus one and a half hours.         */        if (timezone != null) {            int offset = timezone.getRawOffset() / 1000;            if (timezone.useDaylightTime()) offset = offset + 3600;            String name;            if (offset >= 0) {                name = " GMT+";            }            else {                name = " GMT-";                offset = -offset;            }            result = result + name + intToStr(offset / 3600, 2) + intToStr(offset % 3600, 2);        }        return result;    }    /**     * Splits a list of elements into a String array. The method takes a String     * holding a list of elements as well as a separator character. It splits the     * list with regard to the given separator and puts each element into a newly     * created String array. Occurences of the separator character enclosed in     * double quotes are not treated as separators. The method can be used to     * separate those message headers that hold several sub-attributes in one     * value (for example a list of recipients in one "From:" field or the     * various pieces of information stored in the "Content-Type:" field of a     * MIME message.     *     * @see #getStringName     * @see #getStringValue     */    public static String[] getStringElements(String list, char separator){        Vector temp = new Vector();        list = list + separator;        int len = list.length();        int p = 0;        /**         * Walk through the string as long as we're not done. From the         * current starting position p, look for the next semicolon using a         * second counter q. If a semicolon is enclosed in double quotes,         * it's not the one we're looking for.         */        while (p < len) {            int q = p;            boolean quote = false;            while ((q < len) && ((list.charAt(q) != separator) || quote)) {                if (list.charAt(q) == '"') quote = !quote;                q++;            }            String element = list.substring(p, q).trim();            if (element.length() != 0) {                temp.addElement(element);            }            p = q + 1;        }        /**         * Create resulting String array from temporary Vector.         */        String[] result = new String[temp.size()];        for (int i = 0; i < temp.size(); i++) {            result[i] = (String)(temp.elementAt(i));        }        return result;    }    /**     * Returns the name contained in a name/value pair string. The name is     * everything up to, but not including, the first ":" sign in the string. If     * no ":" can be found, null is returned, assuming the string doesn't hold a     * name at all.     *     * @see #getStringElements     * @see #getStringValue     */    public static String getStringName(String s) {        int p = s.indexOf(':');        if (p == -1) {            return null;        }        else {            return s.substring(0, p);        }    }    /**     * Returns the value contained in a name/value pair string. The value is     * everything following, but not including, the first ":" sign in the string.     * If no ":" can be found, the whole string is returned, assuming it holds     * only a value, but not name at all. The method unquotes values enclosed in     * double quotes automatically.     *     * @see #getStringElements     * @see #getStringName     */    public static String getStringValue(String s) {        String value;        int p = s.indexOf(':');        if (p == -1) {            value = s;        }        else {            value = s.substring(p + 1);        }        /**         * Get rid of leading and trailing spaces.         */        value = value.trim();        /**         * Unquote result, if necessary.         */        if ((value.length() > 1) && (value.charAt(0) == '"') && ((value.charAt(value.length() - 1) == '"'))) {            value = value.substring(1, value.length() - 1);        }        return value;    }    /**     * Returns a random string. The method uses the system's millisecond timer     * and an additional random number to create a string that can serve as a     * basis for (hopefully) unique identifiers in messages or MIME parts. It is     * recommended to use this string in conjunction with another string that     * identifies the user or the user's system, for example an e-mail address     * or a hostname, to ensure uniqueness across machine boundaries.     */    public static String getRandomString() {        return Long.toString(System.currentTimeMillis(), 36) + "." +        Integer.toString(Math.abs(new Random().nextInt()), 36);    }    /**     * Returns the message's internal list of lines. This method grants access to     * the Vector that holds the message's header and body lines as well as the     * empty line separating them. It is used for package-internal purposes only     * (and thus has package visibility). As an example, the MimeDecoder class     * needs to see this Vector to find out about all the MIME parts contained in     * the message. The alternative would be to duplicate the whole Vector inside     * a MimeDecoder, but since messages can become quite large, this would waste     * a lot of memory. Another class that makes use of this method is SmtpClient.     *     * @see MimeDecoder     * @see SmtpClient     */    Vector getLines() {        return lines;    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线精品一区二区三区| 福利电影一区二区三区| 免费观看一级特黄欧美大片| 免费人成精品欧美精品| 国产麻豆午夜三级精品| 99久久伊人网影院| 欧美色综合影院| 欧美不卡一区二区三区| 国产精品久久久久久一区二区三区| 一区二区免费在线播放| 美女网站在线免费欧美精品| 国产精品一区免费视频| 91色porny蝌蚪| 日韩免费观看高清完整版| 国产精品天美传媒| 婷婷综合另类小说色区| 国产精品一区二区男女羞羞无遮挡| 国产一区二三区好的| 日韩欧美一区二区久久婷婷| 欧美大黄免费观看| 亚洲欧洲在线观看av| 午夜影院久久久| 国产高清视频一区| 欧美在线免费观看亚洲| 精品av综合导航| 亚洲国产精品一区二区久久恐怖片 | 国产欧美一区二区在线观看| 亚洲精品一二三| 精品一区二区在线观看| 欧美中文字幕不卡| 国产亚洲精品福利| 丝袜亚洲精品中文字幕一区| 成人污污视频在线观看| 91精品国产综合久久国产大片| 国产精品福利影院| 久久国产夜色精品鲁鲁99| 日本电影欧美片| 国产网站一区二区三区| 天天色天天操综合| 91啪九色porn原创视频在线观看| 欧美刺激脚交jootjob| 亚洲一区二区精品视频| 成人免费毛片嘿嘿连载视频| 日韩视频在线一区二区| 亚洲国产色一区| 99精品在线观看视频| 久久蜜桃av一区精品变态类天堂| 亚洲成av人**亚洲成av**| 99精品在线观看视频| 欧美草草影院在线视频| 日韩精品每日更新| 在线亚洲一区观看| 中文字幕一区二区三区色视频| 国内精品免费**视频| 7777精品伊人久久久大香线蕉超级流畅 | 日韩高清不卡在线| 91电影在线观看| 中文字幕一区二区三区在线不卡 | 精品久久久久久亚洲综合网| 亚洲综合一二区| 99精品国产热久久91蜜凸| 国产亚洲欧美激情| 国产在线精品视频| 精品国产1区2区3区| 美女一区二区视频| 日韩一区二区在线免费观看| 午夜激情一区二区| 4438成人网| 日韩国产欧美三级| 欧美一区二区三区免费观看视频| 亚洲国产另类av| 欧美日韩精品欧美日韩精品一综合| 亚洲一区二区在线免费观看视频| 色综合欧美在线视频区| 一区二区三区在线观看视频 | 亚洲国产日韩a在线播放性色| 91麻豆免费观看| 综合久久一区二区三区| 99久久精品国产导航| 亚洲欧美日韩电影| 欧美午夜电影在线播放| 婷婷国产v国产偷v亚洲高清| 欧美精品乱码久久久久久按摩| 婷婷一区二区三区| 精品国产免费久久| 国产一区二区美女诱惑| 久久嫩草精品久久久精品| 国产一区二区三区不卡在线观看 | 国产亚洲一区二区三区在线观看 | 国产欧美精品一区二区色综合朱莉| 日本中文一区二区三区| 日韩欧美黄色影院| 青青草成人在线观看| 久久亚洲一级片| 美女脱光内衣内裤视频久久影院| 日韩欧美三级在线| 麻豆精品视频在线观看| 欧美精品一区二区三区蜜臀| 日本不卡免费在线视频| 久久综合九色欧美综合狠狠| 麻豆91在线播放| 久久精品男人的天堂| 国产精品 欧美精品| 亚洲欧美怡红院| 日本欧美久久久久免费播放网| 日韩视频在线一区二区| 精品一区二区三区在线视频| 欧美高清在线一区| 国产很黄免费观看久久| 亚洲欧美色图小说| 欧美日韩黄视频| 免费观看在线综合色| 国产精品女人毛片| 91国模大尺度私拍在线视频| 日本aⅴ亚洲精品中文乱码| 26uuu色噜噜精品一区二区| 成人高清视频免费观看| 亚洲最大成人综合| 精品国产乱码久久| 99精品视频在线播放观看| 午夜精品久久久| 337p粉嫩大胆噜噜噜噜噜91av | 精品福利av导航| 不卡的av在线| 日韩不卡一二三区| 欧美高清视频一二三区| 国产suv一区二区三区88区| 精品日产卡一卡二卡麻豆| 成人av电影在线观看| 日日夜夜精品免费视频| 久久综合色一综合色88| 在线亚洲一区二区| 韩国v欧美v亚洲v日本v| 一区二区三区国产豹纹内裤在线| 制服丝袜日韩国产| 本田岬高潮一区二区三区| 亚洲成年人网站在线观看| 国产精品美女久久久久久| 欧美日韩一区二区三区视频 | 欧美一区二区三区在线观看 | 日韩免费高清电影| 99久久精品国产麻豆演员表| 激情综合色综合久久综合| 亚洲日本在线看| 国产夜色精品一区二区av| 欧美色国产精品| 成人黄动漫网站免费app| 日本中文字幕一区二区有限公司| 亚洲男帅同性gay1069| 精品国产污网站| 欧美一区日韩一区| 久久99国内精品| 天堂久久一区二区三区| 成人免费一区二区三区视频| 日韩视频一区二区三区在线播放 | 国产精品福利一区| 欧美videossexotv100| 成人高清视频免费观看| 国产一区二区三区香蕉| 蜜臀久久99精品久久久久宅男| 亚洲美女免费在线| 国产精品国产三级国产aⅴ无密码| 日韩欧美在线综合网| 欧美剧情片在线观看| av中文字幕不卡| 成人免费电影视频| 黄页视频在线91| 美腿丝袜亚洲一区| 亚洲国产日产av| 亚洲伊人色欲综合网| 国产欧美精品在线观看| 国产亚洲欧美日韩在线一区| 精品国产亚洲一区二区三区在线观看| 欧美偷拍一区二区| 色噜噜狠狠色综合中国| 成人性生交大片免费看视频在线| 韩日av一区二区| 日韩精品一二三区| 天天操天天色综合| 亚洲曰韩产成在线| 亚洲第一在线综合网站| 亚洲女人的天堂| 一区二区三区毛片| 亚洲高清免费一级二级三级| 亚洲欧美日本韩国| 亚洲一区二区三区中文字幕| 亚洲黄色av一区| 亚洲三级免费电影| 亚洲免费观看高清完整版在线观看熊| 亚洲欧洲一区二区在线播放| 国产精品久久久久影院色老大| 国产精品久久久久久户外露出| 精品国产乱码久久久久久浪潮| 精品乱人伦小说| 久久新电视剧免费观看| 久久综合九色综合欧美亚洲| 国产日韩视频一区二区三区| 久久影视一区二区| 中文字幕国产一区| 综合久久久久综合|