本站不再更新,欢迎光临 java开发技术网
随笔-230  评论-230  文章-8  trackbacks-0

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"995null,   
                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(12); //取取未读邮件
            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();
    }
}
gmail必须自己手动开通支持邮箱支持pop3功能
posted on 2007-10-08 22:40 有猫相伴的日子 阅读(8193) 评论(7)  编辑  收藏 所属分类: jdk

评论:
# re: javax.mail使用例子 2007-10-10 23:11 | 怎么羡慕天空的飞鸟
这个javamail发送中文附件应该会出现乱码吧?(推测)  回复  更多评论
  
# re: javax.mail使用例子 2007-10-11 14:02 | 有猫相伴的日子
发邮件的代码我以前测试过了,没问题  回复  更多评论
  
# re: javax.mail使用例子 2008-04-01 22:13 | 草包书生
这个现在对我正好有用  回复  更多评论
  
# re: javax.mail使用例子[未登录] 2008-04-25 10:43 | jack
这样发送中文你有没有发送到EXCHANGE SERVER测试过,我写的邮件发送程序类似,就是中文发出来不对,是乱码.请指教.  回复  更多评论
  
# re: javax.mail使用例子 2008-06-12 17:05 |
请问哪里可以下载到javax.mail包呢?  回复  更多评论
  
# re: javax.mail使用例子 2009-04-17 15:18 | 奔向灾难般的幸福
CSDN
  回复  更多评论
  
# re: javax.mail使用例子 2011-08-07 22:39 | 哈哈怪
请问该如何配置javamail和jfc,我在网上找了好几种方法但是仍然在import javax.mai.*的时候提示出错,mupeng@gmail.com,谢谢  回复  更多评论
  

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


网站导航:
 
本站不再更新,欢迎光临 java开发技术网