電子郵件(e-mail)是internet上使用最廣泛的服務之一,傳統的email應用模式基于c/s結構,即用戶使用客戶端的郵件收發工具(如outlook、foxmail等)與提供郵件服務的服務器(如163.net、263.net、371.net)通信,在使用客戶端郵件工具之前,用戶要進行一些必要的設置,如指定郵件服務器的主機地址和通信端口等,這些工作對剛開始上網的用戶會有一定的困難,如果把e-mail和web結合在一起,即通過web編程和適當的系統設置,使用戶僅僅以訪問web的方式就可以得到和使用完整的郵件服務,這樣將極大地方便上網用戶,這種系統稱為webmail。webmail是目前internet上最受歡迎的服務之一,也是很多網站必備功能之一。另外webmail同樣也適用于企業或校園網的應用。
通常在后臺服務器的搭建和設置完成后實現webmail系統,而前臺的開發工作主要是開發工具與后臺數據庫和郵件服務器的交互問題。在linux平臺上運行的各種服務器軟件穩定性和可靠性一直很好,而且選擇跨平臺的java開發工具使系統更穩定,具有更高的伸縮性。
string username=request.getparameter("login");string password=request.getparameter("password");session session2=session.getinstance(system.getproperties() ,null);store store=session2.getstore("pop3");
try{ store.connect(host,username+"%nyist.net", password);}catch(javax.mail.authenticationfailedexception e){content="用戶名與密碼不匹配";}
store.connect("nyist.net",-1,request.getparameter("username")+"%nyist.net",request.getparameter("password"));
folder folder = store.getfolder("inbox");folder.open (folder.read_write);message message[]=folder.getmessages();fetchprofile fp=new fetchprofile();fp.add(fetchprofile.item.envelope);fp.add(fetchprofile.item.flags);fp.add("x-mailer");folder.fetch(message,fp);
string contentbody="";object o=message[j].getcontent();
if (message[j].ismimetype("text/plain")) { contentbody=(string)+"</td>"; stringbuffer buf=new stringbuffer(contentbody.length()+6); char ch=' '; for(int p=0;p<contentbody.length();p++)//若遇到換行就轉為<br> {ch=contentbody.charat(p); if(ch=='/n')buf.append("<br>"); else buf.append(ch); } contentbody=buf.tostring();}
else if (message[j].ismimetype("text/html")) contentbody=(string)o+"</td>";
string host = "nyist.net";string from = request.getparameter("from");string to = request.getparameter("to");string subject = request.getparameter("subject");string content = request.getparameter("content");properties props = system.getproperties();//設置郵件服務props.put("mail.smtp.host", host);session session2 =session.getinstance(props, null);
mimemessage message =new mimemessage(session2);message.setfrom(new internetaddress(from));message.addrecipient(message.recipienttype.to,new internetaddress(to));message.setsubject(subject);message.setsentdate(new date());// create the message partmimebodypart messagebodypart =new mimebodypart();
messagebodypart.settext(content);multipart multipart = new mimemultipart();multipart.addbodypart(messagebodypart);
for (int i=0;i<mysmartupload.getfiles().getcount();i++){ com.jspsmart.upload.file myfile = mysmartupload.getfiles().getfile(i); if (!myfile.ismissing()) { myfile.saveas("/upload/" + myfile.getfilename()); count ++;}
for(int i=0;request.getparameter("file"+i)!=null;i++){ messagebodypart = new mimebodypart(); file file=new file("/home/mengyu/root/upload/",request.getparameter("file"+i)); datasource source =new filedatasource(file); messagebodypart.setdatahandler(new datahandler(source)); messagebodypart.setfilename(request.getparameter("file"+i)); multipart.addbodypart(messagebodypart);}// put parts in messagemessage.setcontent(multipart);
transport.send(message);
folder folder=store.getfolder("inbox");folder.open(folder.read_write);message message[]=folder.getmessages();string msg[]=request.getparametervalues("msg");for(int i=0,n=msg.length;i<n;i++) message[double.valueof(msg[i]).intvalue()].setflag(flags.flag.deleted,true);folder.close(true);
//添加用戶runtime.getruntime().exec("/home/vpopmail/bin/vadduser"+request.getparameter("username")+"@nyist.net "+request.getparameter("passwd"));//刪除用戶runtime.getruntime().exec("/home/vpopmail/bin/vdeluser"+request.getparameter("username")+"@nyist.net");//修改用戶密碼runtime.getruntime().exec("/home/vpopmail/bin/vpasswd"+request.getparameter("username")+"@nyist.net "+request.getparameter("passwd"));
新聞熱點
疑難解答