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

📄 jfmsmtp.java

📁 java邮件源程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		/*	 * E-mail composer method.	 */	private String[] createEmailData(JfmEmail email) throws CoreException {		Vector list=new Vector();		/*		 * Header: Adding E-mail subject.		 */		String x=new String("Subject: ");		if (email.getEmailHeader().getSubject()==null ||			email.getEmailHeader().getSubject().length()==0)			throw new CoreException("COR_001:No E-mail subject");		if (email.getEmailHeader().getSubjectCharset()==null ||			email.getEmailHeader().getSubjectCharset().length()==0)			x+=email.getEmailHeader().getSubject()+"\r\n";		else x+=composeSubject(email.getEmailHeader().getSubject(),												 email.getEmailHeader().getSubjectCharset())+"\r\n";		list.addElement(x);		/*		 * Header: Adding E-mail sender.		 */		x=new String("From: ");		if (email.getEmailHeader().getFrom()==null ||			email.getEmailHeader().getFrom().length()==0)			throw new CoreException("COR_001:No E-mail sender");		x+=email.getEmailHeader().getFrom()+"\r\n";		list.addElement(x);		/*		 * Header: Adding E-mail receivers.		 */		x=new String("To: ");		if (email.getEmailHeader().getToCount()<=0)			throw new CoreException("COR_001:No E-mail receiver");		for(int i=0;i<email.getEmailHeader().getToCount();i++) {			if (i==0) x+=email.getEmailHeader().getTo(i);			else x+="; "+email.getEmailHeader().getTo(i);		}		x+="\r\n";		list.addElement(x);		if (email.getEmailHeader().getCCCount()>0) {			/*			 * Header: Adding E-mail CC list.			 */			x=new String("Cc: ");			for(int i=0;i<email.getEmailHeader().getCCCount();i++) {				if (i==0) x+=email.getEmailHeader().getCC(i);				else x+="; "+email.getEmailHeader().getCC(i);			}			x+="\r\n";			list.addElement(x);		}		/*		 * Checking multipart/singlepart.		 * If single part, this part must be text type.		 * If multipart, we need to have at least one text part.		 */		boolean multipart=false;		int parts=email.getEmailPartCount();		if (parts<=0)			throw new CoreException("COR_001:No E-mail part");		if (parts==1 && !(email.getEmailPart(0) instanceof JfmEmailTextPart))			throw new CoreException("COR_010:No plain text part of E-mail");		boolean textpart=false;		for(int i=0;i<parts;i++) if (email.getEmailPart(i) instanceof JfmEmailTextPart) textpart=true; 		if (!textpart) throw new CoreException("COR_010:No plain text part of E-mail");		x=new String("Content-Type: ");		String boundary=new String();		if (parts>1) {			/*			 * We compose multipart E-mail. Needs to calculate unique			 * boundary and to setup content type for multipart/mixed.			 */			multipart=true;			SimpleDateFormat sdf=new SimpleDateFormat("dd.MM.yy hh:mm:ss");			String xdate=sdf.format(new Date());			try {				boundary="=Part_"+JfmCore.base64encode(xdate.getBytes())[0];			} catch(IOException exc) {				throw new CoreException("COR_009:Error encoding E-mail multipart boundary");			}			x+="multipart/mixed; boundary=\""+boundary+"\"\r\n";		} else {			/*			 * We compose single part E-mail. No boundary, but we need			 * to setup characterset in header.			 */			JfmEmailTextPart tpart=(JfmEmailTextPart)email.getEmailPart(0);			x+=tpart.getContentType();			if (tpart.getContentCharset().length()>0)				x+="; charset=\""+tpart.getContentCharset()+"\"";			x+="\r\n";			list.addElement(x);			x=new String("Content-Transfer-Encoding: "+tpart.getContentEncoding()+"\r\n");		}		/*		 * Setting other properties in E-mail header.		 */		list.addElement(x);		x=new String("Organization: \r\n");		list.addElement(x);		x=new String("Mime-Version: 1.0\r\n");		list.addElement(x);		String xdate=email.getEmailHeader().getEmailDateStr();		x=new String("Date: ");		x+=xdate+"\r\n";		list.addElement(x);		x=new String("X-Mailer: "+JfmConsts.XMAILER_STRING+"\r\n");		list.addElement(x);		x=new String("\r\n");		list.addElement(x);		if (!multipart) {			/* We are composing singlepart E-mail. This kind of E-mail should			 * contain only one text part.			 */			JfmEmailTextPart tpart=(JfmEmailTextPart)email.getEmailPart(0);			String[] content=tpart.getContent();			for(int i=0;i<content.length;i++) {				/*				 * Every line of this part should end with CRLF chars. So passed				 * string array when creating E-mail needs to have strings with				 * this chars.				 */				x=content[i];				list.addElement(x);			}			x=new String("\r\n");			list.addElement(x);			x=new String(".\r\n");			list.addElement(x);		} else {			/*			 * Composing multipart E-mail. First we need to check type of part.			 * Allso using boundary for parts.			 */			x=new String("--"+boundary+"\r\n");			list.addElement(x);			for(int i=0;i<email.getEmailPartCount();i++) {				Object opart=email.getEmailPart(i);				if (opart instanceof JfmEmailTextPart) {					/*					 * If this part is text type, add all in part header and add message					 * lines. Message lines should be without CRLF signs, so are					 * adding them here.					 */					JfmEmailTextPart part=(JfmEmailTextPart)opart;					if (part.getContentCharset()==null ||						part.getContentCharset().length()==0)						throw new CoreException("COR_001:No E-mail part charset");					x=new String("Content-Type: "+part.getContentType()+"; charset=\""+part.getContentCharset()+"\"\r\n");					list.addElement(x);					if (part.getContentEncoding()==null ||						part.getContentEncoding().length()==0)						throw new CoreException("COR_001:No E-mail part transfer encoding type");					x=new String("Content-Transfer-Encoding: "+part.getContentEncoding()+"\r\n");							list.addElement(x);					x=new String("\r\n");					list.addElement(x);					String[] message=part.getContent();					for(int j=0;j<message.length;j++) {						x=message[j];						list.addElement(x);					}					x=new String("\r\n");					list.addElement(x);				} else if (opart instanceof JfmEmailBinaryPart) {					/*					 * Part we are composing is binary type. Setting up part header					 * and them adding base64 encoded binary.					 */					JfmEmailBinaryPart part=(JfmEmailBinaryPart)opart;					if (part.getContentName()==null ||						part.getContentName().length()==0)						throw new CoreException("COR_001:No E-mail binary content name");					x=new String("Content-Disposition: attachment; filename=\""+part.getContentName()+"\"\r\n");					list.addElement(x);					x=new String("Content-Type: "+part.getContentType()+"; name=\""+part.getContentName()+"\"\r\n");					list.addElement(x);					if (part.getContentEncoding()==null ||						part.getContentEncoding().length()==0)						throw new CoreException("COR_001:No E-mail binary part transfer encoding type");					x=new String("Content-Transfer-Encoding: "+part.getContentEncoding()+"\r\n");					list.addElement(x);					x=new String("\r\n");					list.addElement(x);					if (part.getContentEncoding().equals("base64")) {						String[] att=null;						try {							att=JfmCore.base64encode(part.getContent());						} catch(IOException exc) {							throw new CoreException("COR_007:Error during encoding E-mail binary part");							}						for(int j=0;j<att.length;j++) {							x=att[j];							list.addElement(x);						}					} else throw new CoreException("COR_006:Uknown binary data encoding:"+part.getContentEncoding());					x=new String("\r\n");					list.addElement(x);				}				if (opart instanceof JfmEmailTextPart ||					opart instanceof JfmEmailBinaryPart) {					if (i<(email.getEmailPartCount()-1)) x=new String("--"+boundary+"\r\n");					else x=new String("--"+boundary+"--\r\n");					list.addElement(x);				}			}		}		x=new String(".\r\n");		list.addElement(x);				String[] out_list=new String[list.size()];		for(int i=0;i<list.size();i++) out_list[i]=(String)list.elementAt(i);		return out_list;								 	}		/*	 * Composing subject for E-mail header if used special characterset.	 * Encoding in base64.	 */	private String composeSubject(String subject,String charset) throws CoreException {		String out=new String("=?");		out+=charset+"?B?";		try {			out+=JfmCore.base64encode(subject.getBytes())[0]+"?=";		} catch(IOException exc) {			throw new CoreException("COR_009:Error encoding E-mail subject");				}		return out;	}}

⌨️ 快捷键说明

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