?? jfmsmtp.java
字號(hào):
/* * 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; }}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -