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

📄 sendmessage.java

📁 支持IMAP/POP3协议的webmail源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* CVS ID: $Id: SendMessage.java,v 1.2 2002/10/04 21:23:37 wastl Exp $ */import net.wastl.webmail.server.*;import net.wastl.webmail.server.http.*;import net.wastl.webmail.ui.html.*;import net.wastl.webmail.ui.xml.*;import net.wastl.webmail.misc.*;import net.wastl.webmail.config.ConfigurationListener;import net.wastl.webmail.exceptions.*;import java.io.*;import java.util.*;import java.text.*;import javax.mail.*;import javax.mail.internet.*;import javax.servlet.ServletException;// Modified by exce, startimport org.bulbul.webmail.util.TranscodeUtil;// Modified by exce, end/* * SendMessage.java * * Created: Tue Sep  7 13:59:30 1999 * * Copyright (C) 1999-2000 Sebastian Schaffert *  * 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; either version 2 * 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, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. *//** * Send a message and show a result page. *  * provides: message send * requires: composer * * @author Sebastian Schaffert * @version */public class SendMessage implements Plugin, URLHandler, ConfigurationListener {        public static final String VERSION="1.8";    public static final String URL="/send";        Storage store;    WebMailServer parent;    Session mailsession;    public SendMessage() {	    }    public void register(WebMailServer parent) {	parent.getURLHandler().registerHandler(URL,this);	parent.getConfigScheme().configRegisterStringKey(this,"SMTP HOST","localhost","Host used to send messages via SMTP. Should be localhost or your SMTP smarthost");	parent.getConfigScheme().configRegisterYesNoKey(this,"ADVERTISEMENT ATTACH", "Attach advertisement from ADVERTISEMENT SIGNATURE PATH to each outgoing message");	parent.getConfigScheme().setDefaultValue("ADVERTISEMENT ATTACH","NO");	parent.getConfigScheme().configRegisterStringKey(this,"ADVERTISEMENT SIGNATURE PATH","advertisement.sig","Path to advertisement to attach to all outgoing messages (either absolute or relative to data directory)");	this.store=parent.getStorage();	this.parent=parent;	init();    }    protected void init() {	Properties props=new Properties();	props.put("mail.host",store.getConfig("SMTP HOST"));	props.put("mail.smtp.host",store.getConfig("SMTP HOST"));	mailsession=Session.getInstance(props,null);    }     public String getName() {	return "SendMessage";    }    public String getDescription() {	return "This URL-Handler sends a submitted message.";    }    public String getVersion() {	return VERSION;    }    public String getURL() {	return URL;    }        public void notifyConfigurationChange(String key) {	init();    }    public HTMLDocument handleURL(String suburl, HTTPSession sess1, HTTPRequestHeader head) throws WebMailException, ServletException {	if(sess1 == null) {	    throw new WebMailException("No session was given. If you feel this is incorrect, please contact your system administrator");	}	WebMailSession session=(WebMailSession)sess1;	UserData user=session.getUser();	HTMLDocument content;	// Modified by exce, start	Locale locale = user.getPreferredLocale();	// Modified by exce, end		/* Save message in case there is an error */	session.storeMessage(head);	if(head.isContentSet("SEND")) {	    /* The form was submitted, now we will send it ... */	    try {						MimeMessage msg=new MimeMessage(mailsession);						Address from[]=new Address[1];		try {		    // Modified by exce, start		    /**		     * Why we need 		     * org.bulbul.util.TranscodeUtil.transcodeThenEncodeByLocale()?		     *		     * Because we specify client browser's encoding to UTF-8, IE seems		     * to send all data encoded in UTF-8. We have to transcode all byte		     * sequences we received to UTF-8, and next we encode those strings		     * using MimeUtility.encodeText() depending on user's locale. Since		     * MimeUtility.encodeText() is used to convert the strings into its		     * transmission format, finally we can use the strings in the		     * outgoing e-mail which relies on receiver's email agent to decode		     * the strings.		     *		     * As described in JavaMail document, MimeUtility.encodeText() conforms		     * to RFC2047 and as a result, we'll get strings like "=?Big5?B......".		     */		    /**		     * Since data in session.getUser() is read from file, the encoding		     * should be default encoding.		     */		    // from[0]=new InternetAddress(MimeUtility.encodeText(session.getUser().getEmail()),		    // 			MimeUtility.encodeText(session.getUser().getFullName()));		    from[0]=			new InternetAddress(					    TranscodeUtil.transcodeThenEncodeByLocale(session.getUser().getEmail(), null, locale),					    TranscodeUtil.transcodeThenEncodeByLocale(session.getUser().getFullName(), null, locale)					    );		    // Modified by exce, end		} catch(UnsupportedEncodingException e) {		    store.log(Storage.LOG_WARN,			      "Unsupported Encoding while trying to send message: "+e.getMessage());		    from[0]=			new InternetAddress(session.getUser().getEmail(),					    session.getUser().getFullName());		}				StringTokenizer t;		try {		    // Modified by exce, start		    /**		     * Since data in session.getUser() is read from file, the encoding		     * should be default encoding.		     */		    // t=new StringTokenizer(MimeUtility.encodeText(head.getContent("TO")).trim(),",");		    t = new StringTokenizer(TranscodeUtil.transcodeThenEncodeByLocale(head.getContent("TO"), null, locale).trim(), ",");		    // Modified by exce, end		} catch(UnsupportedEncodingException e) {		    store.log(Storage.LOG_WARN,			      "Unsupported Encoding while trying to send message: "+e.getMessage());		    t=new StringTokenizer(head.getContent("TO").trim(),",;");		}		/* Check To: field, when empty, throw an exception */		if(t.countTokens()<1) {		    throw new MessagingException("The recipient field must not be empty!");		}		Address to[]=new Address[t.countTokens()];		int i=0;		while(t.hasMoreTokens()) {		    to[i]=new InternetAddress(t.nextToken().trim());		    i++;		}				try {		    // Modified by exce, start		    /**		     * Since data in session.getUser() is read from file, the encoding		     * should be default encoding.		     */		    // t=new StringTokenizer(MimeUtility.encodeText(head.getContent("CC")).trim(),",");		    t = new StringTokenizer(TranscodeUtil.transcodeThenEncodeByLocale(head.getContent("CC"), null, locale).trim(), ",");		    // Modified by exce, end		} catch(UnsupportedEncodingException e) {		    store.log(Storage.LOG_WARN,			      "Unsupported Encoding while trying to send message: "+e.getMessage());		    t=new StringTokenizer(head.getContent("CC").trim(),",;");		}		Address cc[]=new Address[t.countTokens()];		i=0;		while(t.hasMoreTokens()) {		    cc[i]=new InternetAddress(t.nextToken().trim());		    i++;		}				try {		    // Modified by exce, start		    /**		     * Since data in session.getUser() is read from file, the encoding		     * should be default encoding.		     */		    // t=new StringTokenizer(MimeUtility.encodeText(head.getContent("BCC")).trim(),",");		    t = new StringTokenizer(TranscodeUtil.transcodeThenEncodeByLocale(head.getContent("BCC"), null, locale).trim(), ",");		    // Modified by exce, end		} catch(UnsupportedEncodingException e) {		    store.log(Storage.LOG_WARN,			      "Unsupported Encoding while trying to send message: "+e.getMessage());

⌨️ 快捷键说明

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