下载一个javamail 包,就可以了。

解决方案 »

  1.   

    //最近写的一个javamail界面 支持验证 附件 html文本 即是可以直接发送htm脚本
    //e-mail SMTP
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.util.*;
    import javax.mail.*;//记得下载javamailAPI
    import javax.mail.internet.*;
    import javax.activation.*;
    import javax.swing.*;
     public class Sender extends JFrame{
     
      //javamail Session对象
      protected Session session;  //java message对象
      protected MimeMessage mesg;
      protected Multipart mp;
      //GUI
      public JLabel smtpLab=new JLabel("SMTP服务器",SwingConstants.CENTER);
      public JTextField smtpTF=new JTextField("smtp.163.net",20);;
      public JLabel userLab=new JLabel("发送者邮箱",SwingConstants.CENTER);
      public JTextField userName=new JTextField("[email protected]",20);;
      public JLabel pwLab=new JLabel("登陆密码",SwingConstants.CENTER);
      public JPasswordField passWord=new JPasswordField(20);;
      public JLabel recpLab=new JLabel("收信者邮箱",SwingConstants.CENTER);
      public JTextField recp=new JTextField("[email protected]",20);
      public JLabel subjectLab=new JLabel("主题",SwingConstants.CENTER);
      public JTextField subject=new JTextField("HelloMail",20);
      public JButton browser=new JButton("浏览附件");
      public JTextArea msg=new JTextArea(12,10);
      public JButton sendBT=new JButton("发送邮件");
      public JButton clearBT=new JButton("清除文本");
      //附件
      Vector files=new Vector();
      
      public Sender(String str){
       super(str);
       Container cp=getContentPane();
       cp.setLayout(new BorderLayout());
      
       //north
       JPanel paneNorth=new JPanel();
       paneNorth.setLayout(new GridLayout(6,2));
       paneNorth.setBackground(Color.cyan);
       paneNorth.add(smtpLab);
       paneNorth.add(smtpTF);
       paneNorth.add(userLab);
       paneNorth.add(userName);
       paneNorth.add(pwLab);
       paneNorth.add(passWord);
       paneNorth.add(recpLab);
       paneNorth.add(recp);
       paneNorth.add(subjectLab);
       paneNorth.add(subject);
       paneNorth.add(new JLabel("选择附件",SwingConstants.CENTER));
       paneNorth.add(browser);
       browser.setForeground(Color.BLUE);
       browser.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent e){
             JFileChooser  chooser=new JFileChooser();
             int returnVal;
             returnVal=chooser.showOpenDialog(Sender.this);
             if(returnVal==JFileChooser.APPROVE_OPTION){}
             files.addElement(chooser.getSelectedFile().getPath());
             System.out.println(chooser.getSelectedFile().getPath());
             }
       });
       cp.add(paneNorth,BorderLayout.NORTH);
      
      
       //center
       JScrollPane msgScroll=new JScrollPane(msg);
       cp.add(msgScroll,BorderLayout.CENTER);
      
      
      
       //south
       JPanel panelSouth=new JPanel();
       panelSouth.setBackground(Color.cyan);
       panelSouth.add(sendBT);
       sendBT.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent e){
       doSend();
       }
       });
       panelSouth.add(clearBT);
       clearBT.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent e){
       msg.setText("");
       }
       });
       cp.add(panelSouth,BorderLayout.SOUTH);
      
       setSize(400,300);
       pack();
       }
      
       //添加附件
       public void affix() {
      
       String fileAffix;
       Enumeration enum=files.elements();
       while(enum.hasMoreElements()){
      
       try{
        MimeBodyPart mbp=new MimeBodyPart();
        fileAffix=enum.nextElement().toString();
        FileDataSource fs=new FileDataSource(fileAffix);
        mbp.setDataHandler(new DataHandler(fs));
        mbp.setFileName(MimeUtility.encodeWord(fs.getName(),"GB2312",null)); 
                 //防止文件名字中文乱码
        mp.addBodyPart(mbp);
      
                }
             catch(Exception e){
             JOptionPane.showMessageDialog(this,"附件增加出错"+e);
             }
       }
       files.removeAllElements();
       }
      
      //工作方法:发送邮件给smtp服务器
      public void doSend(){
       //java mail 允许处理许多的属性Properities
       Properties props=new Properties();
       props.put("mail.smtp.host",smtpTF.getText());
       props.put("mail.smtp.auth","true");
        //Session
       session=Session.getDefaultInstance(props,null);
       session.setDebug(true);   try{
         mp=new MimeMultipart();//千万要小心,Multipart是抽象类,必须初始化为MimeMultipart
         //MIME message
         mesg=new MimeMessage(session); 
         mesg.setFrom(new InternetAddress(userName.getText()));     //To 地址//这里其实可以群发,用一个InternetAddress[],之后用mesg.addRecipients(..)
         InternetAddress toAddress=new InternetAddress(recp.getText());
         mesg.addRecipient(Message.RecipientType.TO,toAddress);
              //cc地址
        //InternetAddress ccAddress=new InternetAddress(message_cc);
        // mesg.addRecipient(Message.RecipientType.CC,ccAddress);     //主题
         mesg.setSubject(subject.getText());     //正文body支持html,自己写好看的脚本的啊
         MimeBodyPart bp=new MimeBodyPart();
         bp.setContent("<meta content=text/html; charset=gb2312>"+msg.getText(),"text/html;charset=GB2312");
          mp.addBodyPart(bp);
           
         
         //附件
         if(!files.isEmpty()) affix();
         mesg.setContent(mp);
         mesg.saveChanges();
         mesg.setSentDate(new Date());     //发送邮件
        Transport transport = session.getTransport("smtp");
        StringTokenizer tempName=new StringTokenizer(userName.getText(),"@");
         transport.connect(smtpTF.getText(),tempName.nextToken(),passWord.getText());
         transport.sendMessage(mesg,mesg.getRecipients(Message.RecipientType.TO));
              //transport.send(mesg);
              //Transport.send(mesg);
             //transport.sendMessage(mesg, mesg.getAllRecipients());
        JOptionPane.showMessageDialog(this,"邮件发送成功!");     
        }catch(Exception ex){
            JOptionPane.showMessageDialog(this,"邮件发送失败,请检查网络或者参数"+ex);
      }
       }  public static void main(String[] av){
        JFrame.setDefaultLookAndFeelDecorated(true);
       Sender sm=new Sender("javaMail for ESMTP");
      
       //居中
       Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frame=sm.getSize();
        int newX=(screen.width-frame.width)/2;
        int newY=(screen.height-frame.height)/2;
        sm.setLocation(newX,newY);
        sm.show();
        
        //exit operation
        //sm.addWindowListener(new WindowAdapter(){
         //public void windowClosing(WindowEvent e){
             //System.exit(0);
         //}
         //});
        sm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
       }
      }
      

  2.   

    感觉用VJ的写java,有点模棱两可。