基于邮件服务器的聊天测试——————代码示例

时间:2024-04-12 15:17:34

现在的邮件服务提供商很多,而且邮箱的速度也很不错,相互之间也能互发信息,基于邮件服务器进行信息聊天,应该也不错。写个简易版的客户端工具测试下。
本文只做了纯文本内容的发送测试,图片和附件的没做。
功能实现的原理很简单:
客户端信息发送(邮件发送):和普通的smtp发送邮件一样。
客户端信息接收(邮件接收):因为要马上看到信息内容,所以需要用一个线程,死循环的不断登录邮箱收邮件。
代码实现也很简单,只是收发邮件的代码,这里不详说。
收发邮件的组件是javaMail,界面是swing做的。

收发信息实现类EmailUtil.java

基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例public   class  EmailUtil  基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例     
private  Account accout;
基于邮件服务器的聊天测试——————代码示例     
private   static  Session session;
基于邮件服务器的聊天测试——————代码示例     
private   static  Store store;
基于邮件服务器的聊天测试——————代码示例     
private  Date latestSentDate;
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例     
public  EmailUtil() 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例          
if (session  ==   null  ) 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例              initSession();
基于邮件服务器的聊天测试——————代码示例         }

基于邮件服务器的聊天测试——————代码示例     }

基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例      
public   void  send(String mail_body) 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例             
try
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例             
基于邮件服务器的聊天测试——————代码示例
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例                 
if (session  ==   null  ) 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例                      
boolean  b  =  initSession();
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例                         
if (b  ==   false ) 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例                             
return ;
基于邮件服务器的聊天测试——————代码示例                         }

基于邮件服务器的聊天测试——————代码示例                }

基于邮件服务器的聊天测试——————代码示例                 MimeMessage mimeMsg 
=   new  MimeMessage(session);   
基于邮件服务器的聊天测试——————代码示例                 mimeMsg.setSubject(
" 即时信息回复 " );   
基于邮件服务器的聊天测试——————代码示例                 Multipart mp 
=   new  MimeMultipart();   
基于邮件服务器的聊天测试——————代码示例                 BodyPart bp1 
=   new  MimeBodyPart();   
基于邮件服务器的聊天测试——————代码示例                 bp1.setContent(mail_body, 
" text/html;charset=UTF-8 " );   
基于邮件服务器的聊天测试——————代码示例                 mp.addBodyPart(bp1);   
基于邮件服务器的聊天测试——————代码示例                 mimeMsg.setContent(mp);   
基于邮件服务器的聊天测试——————代码示例                 mimeMsg.setFrom(
new  InternetAddress(accout.getFromEmail()));   
基于邮件服务器的聊天测试——————代码示例                 mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress   
基于邮件服务器的聊天测试——————代码示例                         .parse(accout.getToEmail()));   
基于邮件服务器的聊天测试——————代码示例                 mimeMsg.saveChanges();   
基于邮件服务器的聊天测试——————代码示例                 Transport transport 
=  session.getTransport( " smtp " );   
基于邮件服务器的聊天测试——————代码示例                 transport.connect(accout.getSendHost(),   
基于邮件服务器的聊天测试——————代码示例                         accout.getName(), accout.getPassword());   
基于邮件服务器的聊天测试——————代码示例                 transport.sendMessage(mimeMsg, mimeMsg   
基于邮件服务器的聊天测试——————代码示例                         .getRecipients(Message.RecipientType.TO));   
基于邮件服务器的聊天测试——————代码示例                 transport.close();   
基于邮件服务器的聊天测试——————代码示例             }
  catch  (Exception ex)
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例             
基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例                 JOptionPane.showMessageDialog(
null " 发送出错: "   +  ex.getMessage());
基于邮件服务器的聊天测试——————代码示例                 System.out.println(
" 发送邮件出错: " );
基于邮件服务器的聊天测试——————代码示例                 ex.printStackTrace();
基于邮件服务器的聊天测试——————代码示例             }

基于邮件服务器的聊天测试——————代码示例         }

基于邮件服务器的聊天测试——————代码示例      
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例      
public   boolean  receive(JEditorPane receivePane, StringBuffer sff) 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例          
try 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例              
if (session  ==   null  ) 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例                     
boolean  b  =  initSession();
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例                     
if (b  ==   false ) 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例                         
return   false ;
基于邮件服务器的聊天测试——————代码示例                     }

基于邮件服务器的聊天测试——————代码示例                }

基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例              
if (store  ==   null   ||  store.isConnected()  ==   false ) 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例                  URLName urln 
=   new  URLName( " pop3 " , accout.getReceiveHost(),  110 null ,  
基于邮件服务器的聊天测试——————代码示例                          accout.getName(), accout.getPassword());  
基于邮件服务器的聊天测试——————代码示例                   store 
=  session.getStore(urln);
基于邮件服务器的聊天测试——————代码示例                   store.connect();
基于邮件服务器的聊天测试——————代码示例              }

基于邮件服务器的聊天测试——————代码示例              Folder folder 
=  store.getFolder( " INBOX " );
基于邮件服务器的聊天测试——————代码示例              folder.open(Folder.READ_ONLY);
基于邮件服务器的聊天测试——————代码示例              System.out.println(
" 邮件数: "   +  folder.getMessageCount());
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例              
if (latestSentDate  ==   null ) 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例                  latestSentDate 
=  DateUtil.parseDate( " 2010-12-10 00:00:00 " );
基于邮件服务器的聊天测试——————代码示例              }

基于邮件服务器的聊天测试——————代码示例             Address fromEmail 
=   new  InternetAddress(accout.getToEmail());
基于邮件服务器的聊天测试——————代码示例             SearchTerm term1 
=   new  FromTerm(fromEmail);
基于邮件服务器的聊天测试——————代码示例              SearchTerm st 
=   new  SentDateTerm(SentDateTerm.GT, latestSentDate);
基于邮件服务器的聊天测试——————代码示例              SearchTerm term 
=   new  AndTerm(term1, st);
基于邮件服务器的聊天测试——————代码示例              Message[] msgs 
=  folder.search(term);
基于邮件服务器的聊天测试——————代码示例              System.out.println(
" 符合条件邮件数: "   +  msgs.length);
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例              
if (msgs.length  >   0 ) 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例                  
for ( int  i  =   0 ; i  <  msgs.length; i ++ ) 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例                      Message m 
=  msgs[i];
基于邮件服务器的聊天测试——————代码示例                      String msg 
=   "" ;
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例                      
try 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例                          
if (m.isMimeType( " multipart/* " )) 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例                               Multipart mp
= (Multipart)m.getContent();
基于邮件服务器的聊天测试——————代码示例                               Part part
= mp.getBodyPart( 0 );
基于邮件服务器的聊天测试——————代码示例                               msg
= (String)part.getContent();
基于邮件服务器的聊天测试——————代码示例                           }

基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例                          
else 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例                              msg 
=  (String)m.getContent();
基于邮件服务器的聊天测试——————代码示例                              
基于邮件服务器的聊天测试——————代码示例                          }

基于邮件服务器的聊天测试——————代码示例                          latestSentDate 
=  m.getSentDate();
基于邮件服务器的聊天测试——————代码示例                          String from 
=  getFrom(m);
基于邮件服务器的聊天测试——————代码示例                          String sentUser 
=   " <span style=\ " color:#1E90FF;\ " > "   +  from  +   " &nbsp;&nbsp;&nbsp;&nbsp; "   +  DateUtil.dateToStr(latestSentDate)  +   " </span><br/> " ;
基于邮件服务器的聊天测试——————代码示例                          sff.append(sentUser);
基于邮件服务器的聊天测试——————代码示例                          sff.append(msg 
+   " <br/><br/> " );
基于邮件服务器的聊天测试——————代码示例                      }

基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例                     
catch (Exception e) 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例                         System.out.println(
" 读取第 "   +  i  +   " 份邮件出错 " );
基于邮件服务器的聊天测试——————代码示例                         e.printStackTrace();
基于邮件服务器的聊天测试——————代码示例                     }

基于邮件服务器的聊天测试——————代码示例                     }

基于邮件服务器的聊天测试——————代码示例                     receivePane.setText(sff.toString());
基于邮件服务器的聊天测试——————代码示例              }

基于邮件服务器的聊天测试——————代码示例          }

基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例         
catch (Exception e) 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例             sff.append(
" <font color=\ " red\ " >接收邮件出错: "   +  e.getMessage()  +   " </font><br/> " );
基于邮件服务器的聊天测试——————代码示例             receivePane.setText(sff.toString());
基于邮件服务器的聊天测试——————代码示例              System.out.println(
" 接收邮件出错: " );
基于邮件服务器的聊天测试——————代码示例             e.printStackTrace();
基于邮件服务器的聊天测试——————代码示例             
return   false ;
基于邮件服务器的聊天测试——————代码示例             
基于邮件服务器的聊天测试——————代码示例         }

基于邮件服务器的聊天测试——————代码示例         
return   true ;
基于邮件服务器的聊天测试——————代码示例      }

基于邮件服务器的聊天测试——————代码示例      
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例      
private   boolean  initSession() 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例          
if (MessageDialog.getAccount()  !=   null ) 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例              accout 
=  MessageDialog.getAccount();
基于邮件服务器的聊天测试——————代码示例              Properties props 
=   new  Properties();  //  获取系统环境
基于邮件服务器的聊天测试——————代码示例
             props.put( " mail.smtp.host " , accout.getSendHost());
基于邮件服务器的聊天测试——————代码示例              props.put(
" mail.smtp.auth " " true " );
基于邮件服务器的聊天测试——————代码示例              session 
=  Session.getDefaultInstance(props,  null );
基于邮件服务器的聊天测试——————代码示例              
return   true ;
基于邮件服务器的聊天测试——————代码示例          }

基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例          
else 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例              
return   false ;
基于邮件服务器的聊天测试——————代码示例          }

基于邮件服务器的聊天测试——————代码示例      }

基于邮件服务器的聊天测试——————代码示例      
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例      
private  String getFrom(Message mimeMessage)  throws  Exception  基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例             InternetAddress[] address 
=  (InternetAddress[]) mimeMessage.getFrom();
基于邮件服务器的聊天测试——————代码示例             String from 
=  address[ 0 ].getAddress();
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例             
if  (from  ==   null ) 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例                 from 
=   "" ;
基于邮件服务器的聊天测试——————代码示例             }

基于邮件服务器的聊天测试——————代码示例             String personal 
=  address[ 0 ].getPersonal();
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例             
if  (personal  ==   null ) 基于邮件服务器的聊天测试——————代码示例 {
基于邮件服务器的聊天测试——————代码示例                 personal 
=   "" ;
基于邮件服务器的聊天测试——————代码示例             }

基于邮件服务器的聊天测试——————代码示例             String fromaddr 
=  personal  +   " &nbsp;&nbsp;&lt; "   +  from  +   " &gt; " ;
基于邮件服务器的聊天测试——————代码示例             
return  fromaddr;
基于邮件服务器的聊天测试——————代码示例         }

基于邮件服务器的聊天测试——————代码示例      
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例      
public   void  getMailContent(Part part, StringBuffer sff)  throws  Exception  基于邮件服务器的聊天测试——————代码示例 {   
基于邮件服务器的聊天测试——————代码示例             String contenttype 
=  part.getContentType();   
基于邮件服务器的聊天测试——————代码示例             
int  nameindex  =  contenttype.indexOf( " name " );   
基于邮件服务器的聊天测试——————代码示例             
boolean  conname  =   false ;   
基于邮件服务器的聊天测试——————代码示例             
if  (nameindex  !=   - 1 )   
基于邮件服务器的聊天测试——————代码示例                 conname 
=   true ;   
基于邮件服务器的聊天测试——————代码示例             System.out.println(
" CONTENTTYPE:  "   +  contenttype);   
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例             
if  (part.isMimeType( " text/plain " &&   ! conname)  基于邮件服务器的聊天测试——————代码示例 {   
基于邮件服务器的聊天测试——————代码示例                 sff.append((String) part.getContent());   
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例             }
  else   if  (part.isMimeType( " text/html " &&   ! conname)  基于邮件服务器的聊天测试——————代码示例 {   
基于邮件服务器的聊天测试——————代码示例                 sff.append((String) part.getContent());   
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例             }
  else   if  (part.isMimeType( " multipart/* " ))  基于邮件服务器的聊天测试——————代码示例 {   
基于邮件服务器的聊天测试——————代码示例                 Multipart multipart 
=  (Multipart) part.getContent();   
基于邮件服务器的聊天测试——————代码示例                 
int  counts  =  multipart.getCount();   
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例                 
for  ( int  i  =   0 ; i  <  counts; i ++ 基于邮件服务器的聊天测试——————代码示例 {   
基于邮件服务器的聊天测试——————代码示例                     getMailContent(multipart.getBodyPart(i), sff);   
基于邮件服务器的聊天测试——————代码示例                 }
   
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例             }
  else   if  (part.isMimeType( " message/rfc822 " ))  基于邮件服务器的聊天测试——————代码示例 {   
基于邮件服务器的聊天测试——————代码示例                 getMailContent((Part) part.getContent(), sff);   
基于邮件服务器的聊天测试——————代码示例基于邮件服务器的聊天测试——————代码示例             }
  else   基于邮件服务器的聊天测试——————代码示例 {}    
基于邮件服务器的聊天测试——————代码示例         }
   
基于邮件服务器的聊天测试——————代码示例 }


下面看效果,例子是用了QQ邮箱和网易邮箱测试。QQ邮箱在win 7系统使用,网易邮箱在Ubuntu使用
程序运行时,先点击“配置”按钮配置邮件服务器和帐号信息,配置完后保存,再点登录,如果配置没有填错的话,就可以正常的收发信息。
基于邮件服务器的聊天测试——————代码示例