我的java天地

JAVAMAIL发送邮件程序

package  mail;

import  java.util. *
;
import  javax.mail. *
;
import  javax.mail.internet. *
;
import
 java.util.Date;
import  javax.activation. *
;
import  java.io. *
;

public   class  Mail 
{

    
private  MimeMessage mimeMsg;  //  MIME邮件对象


    
private  Session session;  //  邮件会话对象

    
private  Properties props;  //  系统属性

    
private   boolean  needAuth  =   false //  smtp是否需要认证

    
private  String username  =   "" //  smtp认证用户名和密码

    
private  String password  =   "" ;

    
private  Multipart mp;  //  Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成


    
public  Mail(String smtp)  {
        setSmtpHost(smtp);
        createMimeMessage();
    }


    
public   void  setSmtpHost(String hostName)  {
        System.out.println(
" 设置系统属性:mail.smtp.host =  "   +
 hostName);
        
if  (props  ==   null
)
            props 
=  System.getProperties();  //  获得系统属性对象

        props.put( " mail.smtp.host " , hostName);  //  设置SMTP主机
    }


    
public   boolean  createMimeMessage()  {
        
try  
{
            System.out.println(
" 准备获取邮件会话对象! "
);
            session 
=  Session.getDefaultInstance(props,  null );  //  获得邮件会话对象

        }
  catch  (Exception e)  {
            System.err.println(
" 获取邮件会话对象时发生错误! "   +
 e);
            
return   false
;
        }

        System.out.println(
" 准备创建MIME邮件对象! " );
        
try  
{
            mimeMsg 
=   new  MimeMessage(session);  //  创建MIME邮件对象

            mp  =   new  MimeMultipart();  //  mp 一个multipart对象
            
//  Multipart is a container that holds multiple body parts.

             return   true ;
        }
  catch  (Exception e)  {
            System.err.println(
" 创建MIME邮件对象失败! "   +
 e);
            
return   false
;
        }

    }


    
public   void  setNeedAuth( boolean  need)  {
        System.out.println(
" 设置smtp身份认证: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 "
);
        }

    }


    
public   void  setNamePass(String name, String pass)  {
        System.out.println(
" 程序得到用户名与密码 "
);
        username 
=
 name;
        password 
=
 pass;
    }


    
public   boolean  setSubject(String mailSubject)  {
        System.out.println(
" 设置邮件主题! "
);
        
try  
{
            mimeMsg.setSubject(mailSubject);
            
return   true
;
        }
  catch  (Exception e)  {
            System.err.println(
" 设置邮件主题发生错误! "
);
            
return   false
;
        }

    }


    
public   boolean  setBody(String mailBody)  {
        
try  
{
            System.out.println(
" 设置邮件体格式 "
);
            BodyPart bp 
=   new
 MimeBodyPart();
            
//  转换成中文格式

            bp.setContent(
                    
" <meta http-equiv=Content-Type content=text/html; charset=gb2312> "

                            
+  mailBody,  " text/html;charset=GB2312 " );
            mp.addBodyPart(bp);
            
return   true
;
        }
  catch  (Exception e)  {
            System.err.println(
" 设置邮件正文时发生错误! "   +
 e);
            
return   false
;
        }

    }


    
public   boolean  addFileAffix(String filename)  {
        System.out.println(
" 增加邮件附件: "   +
 filename);
        
try  
{
            BodyPart bp 
=   new
 MimeBodyPart();
            FileDataSource fileds 
=   new
 FileDataSource(filename);
            bp.setDataHandler(
new
 DataHandler(fileds));
            
// System.out.println("文件名:  "+fileds.getName());

            bp.setFileName( new  String(fileds.getName().getBytes(), " ISO8859-1 " ));
            mp.addBodyPart(bp);
            
return   true
;
        }
  catch  (Exception e)  {
            System.err.println(
" 增加邮件附件: "   +  filename  +   " 发生错误! "   +
 e);
            
return   false
;
        }

    }


    
public   boolean  setFrom(String from)  {
        System.out.println(
" 设置发信人! "
);
        
try  
{
            mimeMsg.setFrom(
new  InternetAddress(from));  //  设置发信人

             return   true ;
        }
  catch  (Exception e)  {
            
return   false
;
        }

    }


    
public   boolean  setTo(String to)  {
        System.out.println(
" 设置收信人 "
);
        
if  (to  ==   null
)
            
return   false
;
        
try  
{
            mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress
                    .parse(to));
            
return   true
;
        }
  catch  (Exception e)  {
            
return   false
;
        }

    }


    
public   boolean  setCopyTo(String copyto)  {
        System.out.println(
" 发送附件到 "
);
        
if  (copyto  ==   null
)
            
return   false
;
        
try  
{
            mimeMsg.setRecipients(Message.RecipientType.CC,
                    (Address[]) InternetAddress.parse(copyto));
            
return   true
;
        }
  catch  (Exception e)  {
            
return   false
;
        }

    }


    
public   boolean  sendout()  {
        
try  
{
            mimeMsg.setContent(mp);
            mimeMsg.saveChanges();
            System.out.println(
" 正在发送邮件. "
);
            Session mailSession 
=  Session.getInstance(props,  null
);
            Transport transport 
=  mailSession.getTransport( " smtp "
);
            transport.connect((String) props.get(
" mail.smtp.host "
), username,
                    password);
            transport.sendMessage(mimeMsg, mimeMsg
                    .getRecipients(Message.RecipientType.TO));
            
//  transport.send(mimeMsg);

            System.out.println( " 发送邮件成功! " );
            transport.close();
            
return   true
;
        }
  catch  (Exception e)  {
            System.err.println(
" 邮件发送失败! "   +
 e);
            
return   false
;
        }

    }


    
public   static   void  main(String[] args)  {
        String mailbody 
=   " 发送邮件测试 <font color=red>欢迎你,java</font> "
;
        Mail themail 
=   new  Mail( " smtp.163.com "
);
        themail.setNeedAuth(
true
);
        
//  标题

         if  (themail.setSubject( " 发送邮件测试 " ==   false )
            
return
;
        
//  邮件内容 支持html 如 <font color=red>欢迎你,java</font>

         if  (themail.setBody(mailbody)  ==   false )
            
return
;
        
//  收件人邮箱

         if  (themail.setTo( " xxxxx@139130.net " ==   false )
            
return
;
        
//  发件人邮箱

         if  (themail.setFrom( " xxxxx@163.com " ==   false )
            
return
;
        
//  设置附件

         if  (themail.addFileAffix( " C:/Documents and Settings/Administrator/桌面/通道预警.txt " ==   false )
            
return //  附件在本地机子上的绝对路径

        themail.setNamePass( " xxxxx@163.com " " password " );  //  用户名与密码,即您选择一个自己的电邮
         if  (themail.sendout()  ==   false )
            
return
;
    }

}

posted on 2011-04-25 16:12 tobyxiong 阅读(388) 评论(0)  编辑  收藏 所属分类: java


只有注册用户登录后才能发表评论。


网站导航:
 
<2011年4月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿(3)

随笔分类(144)

随笔档案(157)

相册

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜