⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mailsendframe.java

📁 一个以smtp方式发送邮件的程序
💻 JAVA
字号:
 //e-mail   SMTP   支持html文本   多附件   验证     界面   
  import   java.awt.*;  import java.awt.Color;
import java.awt.Component;
 
  import   java.awt.event.*;   
  import   java.io.*;   
  import   java.util.*;   
  import   javax.mail.*;   
  import   javax.mail.internet.*;   
  import   javax.activation.*;   
  import   javax.swing.*;  import com.swtdesigner.FocusTraversalOnArray;
 
    
    
    
    
    public   class   mailSendFrame   extends   JFrame{   
      
      //javamail   Session对象   
      private JLabel label;
      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("madass@163.net",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("zealVampire@tom.com",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   mailSendFrame(String   str){   
      super(str);   
      Container   cp=getContentPane();   
      cp.setLayout(new   BorderLayout());   
        
      //north   
      JPanel   paneNorth=new   JPanel();   
      paneNorth.setActionMap(null);
      paneNorth.setTransferHandler(null);
      paneNorth.setFocusCycleRoot(true);
      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);   
      label = new   JLabel("选择附件",SwingConstants.CENTER);
      label.setForeground(Color.BLACK);
      paneNorth.add(label);   
      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(mailSendFrame.this);   
                  if(returnVal==JFileChooser.APPROVE_OPTION){}   
                  files.addElement(chooser.getSelectedFile().getPath());   
                  System.out.println(chooser.getSelectedFile().getPath());   
                  }   
      });   
      cp.add(paneNorth,BorderLayout.NORTH);   
      paneNorth.setFocusTraversalPolicy(new FocusTraversalOnArray(new Component[] {smtpLab, smtpTF, userLab, userName, pwLab, passWord, recpLab, recp, subjectLab, subject, label, browser}));
        
        
      //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  enume=files.elements();   
      while(enume.hasMoreElements()){   
        
      try{   
        MimeBodyPart   mbp=new   MimeBodyPart();   
        fileAffix=enume.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);   
      mailSendFrame   sm=new   mailSendFrame("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);   
            
      }   
    
    
      }   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -