java.mail使用例子


package  pg.system;

/**
 * 
@author  pdw
 *
 * TODO 发送邮件!
 * 
 
*/
import  java.util. * ;
import  javax.mail. * ;
import  javax.mail.internet. * ;
import  javax.activation. * ;
import  java.security.spec.X509EncodedKeySpec;

public   class  SendMail {
    
public  MimeMessage mimeMsg;   // 要发送的email信息
     private  Session session;
    
private  Properties props;
    
private   boolean  needAuth = false ;
    
    
private  String username = "" ;
    
private  String password = "" ;
    
    
private  Multipart mp;   // 存放邮件的title 内容和附件
    
    
public  SendMail(String stmp){
        setSmtpHost(stmp);
        createMimeMessage();
    }
    
/**
     * 
     * 
@param  hostName
     
*/
    
public   void  setSmtpHost(String hostName){
        System.out.println(
" mail.stmp.host=  " + hostName);
        
if (props == null ){
            props
= System.getProperties();
        }
        props.put(
" mail.smtp.host " ,hostName);
    }
    
    
public   boolean  createMimeMessage(){
        
try {
            System.out.println(
" Session begin----------- " );
            session
= Session.getInstance(props, null );
        }
catch (Exception e){
            System.out.println(
" Session.getInstance faild! " + e);
            
return   false ;
        }
        System.out.println(
" MimeMEssage begin---------! " );
        
try {
            mimeMsg
= new  MimeMessage(session);
            mp
= new  MimeMultipart();
            
return   true ;
        }
catch (Exception e){
            System.out.println(
" MimeMessage fiald!  " + e.toString());
            
return   false ;
        }
    }
    
/**
     * 
     * 
@param  need
     
*/
    
public   void  setNeedAuth( boolean  need){
        System.out.println(
" :mail.smtp.auth= " + need);
        
if (props == null ){
            props
= System.getProperties();
        }
        
if (need){
            props.put(
" mail.smtp.auth " , " true " );
        }
        
else {
            props.put(
" mail.smtp.auth " , " false " );
        }
    }
    
/**
     * 
     * 
@param  name
     * 
@param  pass
     
*/
    
public   void  setNamePass(String name,String pass){
        username
= name;
        password
= pass;
    }
    
/**
     * 
     * 
@param  mailSubject
     * 
@return  boolean
     
*/
    
public   boolean  setSubject(String mailSubject){
        System.out.println(
" set title begin. " );
        
try {
            
if ( ! mailSubject.equals( "" ) && mailSubject != null ){
                mimeMsg.setSubject(mailSubject);
            }
            
return   true ;
        }
catch (Exception e){
            System.out.println(
" set Title faild! " );
            
return   false ;
        }
    }
    
/**
     *  添加附件..
     * 
@param  filename
     * 
@return
     
*/
    
public   boolean  addFileAffix(String filename){
        System.out.println(
" 增加附件.. " );
        
if (filename.equals( "" ) || filename == null ){
            
return   false ;
        }
        String file[];
        file
= filename.split( " ; " );
        System.out.println(
" 你有  " + file.length + "  个附件! " );
        
try {
            
for ( int  i = 0 ;i < file.length;i ++ ){
                BodyPart bp
= new  MimeBodyPart();
                FileDataSource fileds
= new  FileDataSource(file[i]);
                bp.setDataHandler(
new  DataHandler(fileds));
                bp.setFileName(fileds.getName());
                mp.addBodyPart(bp);
             }
             
return   true ;
           }
catch (Exception e){
             System.err.println(
" 增加附件:  " + filename + " --faild! " + e);
             
return   false ;
        }
   }
    
/**
     * 
     * 
@param  from
     * 
@return
     
*/
    
public   boolean  setFrom(String from){
        System.out.println(
" Set From . " );
        
try {
            mimeMsg.setFrom(
new  InternetAddress(from));
            
return   true ;
        }
catch (Exception e){
            
return   false ;
        }
    }
    
/**
     * 
     * 
@param  to
     * 
@return
     
*/
    
public   boolean  setTo(String to){
        System.out.println(
" Set to. " );
        
if (to == null || to.equals( "" )){
            
return   false ;
        }
        
try {
            mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
            
return   true ;
        }
catch (Exception e){
            
return   false ;
        }
    }
    
public   boolean  setCopyTo(String copyto){
        
if (copyto.equals( "" ) || copyto == null ){
            
return   false ;
        }
        
try {
            String copy[];
            copy
= copyto.split( " ; " );
            
for ( int  i = 0 ;i < copy.length;i ++ ){
                mimeMsg.setRecipients(Message.RecipientType.TO,(Address[])InternetAddress.parse(copy[i]));
            }
            
return   true ;
        }
catch (Exception e){
            
return   false ;
        }
    }
    
    
    
/**
     * 设置信的内容!
     * 
@param  mailBody
     * 
@return  boolean
     
*/
    
public   boolean  setBody(String mailBody){
        
try {
            BodyPart bp
= new  MimeBodyPart();
            bp.setContent(
" <meta http-equiv=Context-Type context=text/html;charset=gb2312> " + mailBody, " text/html;charset=GB2312 " );
            mp.addBodyPart(bp);
            
return   true ;
        }
catch (Exception e){
            System.out.println(
" Set context Faild!  " + e);
            
return   false ;
        }
    }
    
/**
     * 
     * 
@param  htmlpath
     * 
@return  boolean
     
*/
    
public   boolean  setHtml(String htmlpath){
        
try {
            
if ( ! htmlpath.equals( "" ) || htmlpath != null ){
                BodyPart mbp
= new  MimeBodyPart();
                DataSource ds
= new  FileDataSource(htmlpath);
                mbp.setDataHandler(
new  DataHandler(ds));
                mbp.setHeader(
" Context-ID " , " meme " );
                mp.addBodyPart(mbp);
                }
                
return   true ;
            }
catch (Exception  e){
                System.err.println(
" Set Html Faild! " + e);
                
return   false ;
            }
        }
     
public   boolean  setOut(){
         
try {
             mimeMsg.setContent(mp);
             mimeMsg.saveChanges();
             System.out.println(
" 正在SendMail. " );
             Session mailSession
= session.getInstance(props, null );
             Transport tp
= mailSession.getTransport( " smtp " );
             tp.connect((String)props.getProperty(
" mail.stmp.host " ),username,password);
             tp.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
             
// tp.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.CC));
             System.out.println( " Send Mail 成功.. " );
             tp.close();
             
return   true ;
         }
catch (Exception e){
             e.printStackTrace();
             
return   false ;
         }
     }
       
}


测试类]


package  pg.system;


public   class  SendMailDemo {

    
public   static   void  main(String[] args) {
        SendMail sm
= new  SendMail( " mail.ldtec.com " );
        sm.setNamePass(
" peidewan@ldtec.com " , " 123456 " );
        sm.setSubject(
" 测试,测试 " );
        sm.setFrom(
" peidewan@ldtec.com " );
        sm.setTo(
" pdw2009@yahoo.com.cn " );
        sm.addFileAffix(
" f:/adsl.txt " );
        StringBuffer bs
= new  StringBuffer();
        bs.append(
" 裴德万:/n " );
        bs.append(
"        测试度奇珍异宝埼地在檌!!!!!!!!!!! " );
        sm.setBody(
" DFSAAAAAAAAAAAAAAAAA " );
        sm.setNeedAuth(
true );
        
boolean  b = sm.setOut();
        
if (b){
            System.out.println(
" /n邮件发送成功!!!!! " );
        }
        
else {
            System.out.println(
" 邮件发送失败!!!! " );
        }
    }
}




很久以前写的一个发邮件的例,今天把它贴出来做笔记!!

gmail邮件收发。

package  test;
import  java.security.Security;
import  java.util. * ;

import  javax.mail. * ;
import  javax.mail.internet.InternetAddress;
import  javax.mail.internet.MimeMessage;
import  javax.mail.internet.MimeUtility;

/**
 * 定时收取新邮件类
 * 
@author  peidw
 *
 
*/
class  ReceiveNewMailTimerTask  extends  TimerTask{
    
static  Store store = null ;
    
static  String username = " pdw2009@gmail.com " ;
    
static  String password = " pdw123456 " ;
    
/**
     * 静态初始化模块,只保留一个Store连接
     
*/
    
static {
        
try  {
            connect(username,password);
        } 
catch  (Exception e) {
            e.printStackTrace();
        }
    }
    
    
    
/**
     * 任务计划执行方法
     
*/
    @Override
    
public   void  run() {
        
try {
            System.out.println(
" 正在读取邮箱. " );
            printNewMailInfo(getNewMessage(username,password));
        }
catch (Exception e){
            e.printStackTrace();
        }
        
    }
    
private   static   void  connect(String username,String password) throws  Exception{
        Security.addProvider(
new  com.sun.net.ssl.internal.ssl.Provider());   
        
final  String SSL_FACTORY  =   " javax.net.ssl.SSLSocketFactory " ;   
        Properties props 
=  System.getProperties();   
        props.setProperty(
" mail.pop3.socketFactory.class " , SSL_FACTORY);   
        props.setProperty(
" mail.pop3.socketFactory.fallback " " false " );   
        props.setProperty(
" mail.pop3.port " " 995 " );   
        props.setProperty(
" mail.pop3.socketFactory.port " " 995 " );   
        Session session 
=  Session.getDefaultInstance(props,  null );   
        URLName urln 
=   new  URLName( " pop3 " " pop.gmail.com " 995 null ,   
                username, password);   
        store 
=  session.getStore(urln);   
        store.connect(); 
    }
    
/**
     * 读取新邮件
     * 
@param  username
     * 
@param  password
     * 
@return
     * 
@throws  Exception
     
*/
    
public  Message[] getNewMessage(String username,String password) throws  Exception{
        
if (store.isConnected()){
            connect(username,password);
        }
        Folder inbox 
=  store.getFolder( " INBOX " );   
        inbox.open(Folder.READ_ONLY);   
        FetchProfile profile 
=   new  FetchProfile();   
        profile.add(FetchProfile.Item.ENVELOPE);  
        
        
if (inbox.getUnreadMessageCount() > 0 ){
            
int  fetchcount = inbox.getMessageCount() - inbox.getUnreadMessageCount();
            
if (fetchcount == 0 ) return  inbox.getMessages();
            Message[] mesg
= inbox.getMessages( 1 2 );  // 取取未读邮件
             return  mesg;
        }
else {
            System.out.println(
" 不存在新邮件.. " );
            
throw   new  RuntimeException( " 不存在新邮件 " );
        }
    }
    
/**
     * 打印邮件信息
     * 
@param  message
     * 
@throws  Excepiton
     
*/
    
public   void  printNewMailInfo(Message[] message) throws  Exception{
        Message msg
= null ;
        String text
= null ;
        
for ( int  i = 0 ;i < message.length;i ++ ){
            msg
= message[i];
            text
= msg.getSubject();
            
if (text == null ){
                System.out.println(
" 该邮件没标准 " );
            }
else   if (text.startsWith( " =GBK " ) || text.startsWith( " =gb2312 " )){
                text
= MimeUtility.decodeText(text);
            }
else {
                text
= new  String(text.getBytes( " gb2312 " ));
            }
            System.out.println(
" -- "   +  text); 
        }
    }
}


public   class  GmailReceiveAndSend {
    
    
public   void  sendMail() throws  Exception{
        
// 收邮件的连接
        Security.addProvider( new   com.sun.net.ssl.internal.ssl.Provider());
        
final   String  SSL_FACTORY   =    " javax.net.ssl.SSLSocketFactory " ;
        Properties  props  
=   System.getProperties();
        props.setProperty(
" mail.smtp.host " ,   " smtp.gmail.com " );
        props.setProperty(
" mail.smtp.socketFactory.class " ,  SSL_FACTORY);
        props.setProperty(
" mail.smtp.socketFactory.fallback " ,   " false " );
        props.setProperty(
" mail.smtp.port " ,   " 465 " );
        props.setProperty(
" mail.smtp.socketFactory.port " ,   " 465 " );
        props.put(
" mail.smtp.auth " ,   " true " );
        
final   String  username   =    " pdw2009 " ;
        
final   String  password   =    " pdw123456 " ;
        Session  session  
=   Session.getDefaultInstance(props,   new   Authenticator(){
            
protected   PasswordAuthentication  getPasswordAuthentication()  {
                           
return    new   PasswordAuthentication(username,password );
         }});
         Message  msg  
=    new   MimeMessage(session);

         msg.setFrom(
new   InternetAddress( " pdw2009 "    +    " @gmail.com " ));
         msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(
" pdw2009@qq.com " , false ));
         msg.setSubject(
" 你好 " );
         msg.setText(
" gmail 邮件测试 " );
         msg.setSentDate(
new   Date());
         Transport.send(msg);
         System.out.println(
" Message  sent. " );


    }
    
    
    
public   static   void  main(String[] args) throws  Exception{
        ReceiveNewMailTimerTask task
= new  ReceiveNewMailTimerTask();
        Timer timer
= new  Timer();
        
// timer.schedule(task,2000,1*60*1000);
        GmailReceiveAndSend gs = new  GmailReceiveAndSend();
        gs.sendMail();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值