home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / Share / Java / JDesignerPro / Jdp3_0.exe / data1.cab / Program_Files / JDPSendMail.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-09  |  4.7 KB  |  228 lines

  1. import java.io.DataInputStream;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FilterInputStream;
  5. import java.io.InputStream;
  6. import java.io.PrintStream;
  7. import java.io.StringBufferInputStream;
  8. import java.net.InetAddress;
  9. import java.net.Socket;
  10. import java.util.StringTokenizer;
  11.  
  12. public class JDPSendMail {
  13.    String result = "";
  14.    String lastline;
  15.    short port = 25;
  16.    int maxCharLimit = 70;
  17.    // $FF: renamed from: s java.net.Socket
  18.    Socket field_0;
  19.    // $FF: renamed from: p java.io.PrintStream
  20.    PrintStream field_1;
  21.    // $FF: renamed from: in java.io.DataInputStream
  22.    DataInputStream field_2;
  23.    String mailhost;
  24.    String prevSender = "";
  25.    String lastAttachment;
  26.    byte[] fileContents;
  27.  
  28.    public boolean mailMessage(String var1, String var2, String var3, String var4) {
  29.       return this.mailMessage(var1, var2, var3, var4, (String)null);
  30.    }
  31.  
  32.    public boolean mailMessage(String var1, String var2, String var3, String var4, String var5) {
  33.       if (var1 == null) {
  34.          return false;
  35.       } else {
  36.          try {
  37.             this.field_1.print("MAIL FROM:<" + var2 + ">\r\n");
  38.             this.expect("250", "mail from");
  39.             this.prevSender = var2;
  40.             StringTokenizer var6 = new StringTokenizer(var1, ",");
  41.  
  42.             while(var6.hasMoreTokens()) {
  43.                this.field_1.print("RCPT TO:<" + var6.nextToken() + ">\r\n");
  44.                this.expect("250", "rcpt to");
  45.             }
  46.  
  47.             this.field_1.print("DATA\r\n");
  48.             this.expect("354", "data");
  49.             this.field_1.print("From: " + var2 + "\n");
  50.             this.field_1.print("To: " + var1 + "\n");
  51.             this.field_1.print("Subject: " + var3);
  52.             if (var5 != null && !var5.equals("")) {
  53.                this.field_1.print("\n");
  54.                this.lastAttachment = var5;
  55.                int var11 = var5.lastIndexOf(File.separator);
  56.                if (var11 > 0) {
  57.                   var5 = var5.substring(var11 + 1);
  58.                }
  59.  
  60.                String var12 = "SimpleBoundary";
  61.                this.field_1.print("MIME-Version: 1.0\n");
  62.                this.field_1.print("Content-Type: multipart/mixed; boundary=\"" + var12 + "\"\n");
  63.                this.field_1.print("--" + var12 + "\n");
  64.                this.field_1.print("Content-Type: text/plain; charset=\"us-ascii\"\n\n");
  65.                this.field_1.print(var4 + "\n");
  66.                this.field_1.print("--" + var12 + "\n");
  67.                this.field_1.print("Content-Type: application/octet-stream; name=\"" + var5 + "\"\n");
  68.                this.field_1.print("Content-Transfer-Encoding: base64\n");
  69.                this.field_1.print("Content-Disposition: attachment; filename=\"" + var5 + "\"\n");
  70.                this.field_1.print("Content-Description: Attached file\n\n");
  71.                this.sendAttachment(this.lastAttachment);
  72.                this.field_1.print("--" + var12 + "--\n\n");
  73.             } else {
  74.                this.field_1.print("\r\n\r\n");
  75.  
  76.                String var8;
  77.                for(DataInputStream var7 = new DataInputStream(new StringBufferInputStream(var4)); ((FilterInputStream)var7).available() > 0; this.field_1.println(var8)) {
  78.                   var8 = var7.readLine();
  79.                   if (var8.equals(".")) {
  80.                      var8 = "..";
  81.                   }
  82.                }
  83.             }
  84.  
  85.             this.field_1.print("\n.\n");
  86.             this.expect("250", "end of data");
  87.             return true;
  88.          } catch (Exception var10) {
  89.             this.result = ((Throwable)var10).getMessage();
  90.             this.closePort();
  91.             this.openPort();
  92.             return false;
  93.          }
  94.       }
  95.    }
  96.  
  97.    void expect(String var1, String var2) throws Exception {
  98.       this.lastline = this.field_2.readLine();
  99.       if (var1 != null && !this.lastline.startsWith(var1)) {
  100.          throw new Exception(var2 + ":" + this.lastline);
  101.       } else {
  102.          while(this.lastline.startsWith(var1 + "-")) {
  103.             this.lastline = this.field_2.readLine();
  104.          }
  105.  
  106.       }
  107.    }
  108.  
  109.    void sendAttachment(String var1) {
  110.       char var5 = File.separator.charAt(0);
  111.       byte var7 = 70;
  112.       char var8 = 'δ┐£';
  113.  
  114.       try {
  115.          var1.replace('/', var5);
  116.          var1.replace('\\', var5);
  117.          FileInputStream var4 = new FileInputStream(var1);
  118.          InputStream var2 = (InputStream)var4;
  119.          new DataInputStream(var2);
  120.          int var11 = var2.available();
  121.          if (var11 <= 0 || var11 > var8) {
  122.             var11 = var8;
  123.          }
  124.  
  125.          byte[] var6 = new byte[var11];
  126.          int var12 = 0;
  127.  
  128.          try {
  129.             int var13;
  130.             while((var13 = var2.read(var6, 0, var11)) > 0) {
  131.                var12 += var13;
  132.                this.fileContents = JDPEncode.base64Encode(var6);
  133.                int var14 = this.fileContents.length;
  134.                int var9 = var14 / var7;
  135.  
  136.                int var10;
  137.                for(var10 = 0; var10 < var9; ++var10) {
  138.                   this.field_1.write(this.fileContents, var10 * var7, var7);
  139.                   this.field_1.print("\n");
  140.                }
  141.  
  142.                if (var9 * var7 < this.fileContents.length) {
  143.                   this.field_1.write(this.fileContents, var10 * var7, this.fileContents.length - var10 * var7);
  144.                   this.field_1.print("\n");
  145.                }
  146.  
  147.                var11 = var2.available();
  148.                if (var11 <= 0 || var11 > var8) {
  149.                   var11 = var8;
  150.                }
  151.  
  152.                if (var11 != var8) {
  153.                   var6 = new byte[var11];
  154.                }
  155.             }
  156.  
  157.             var2.close();
  158.          } catch (Exception var16) {
  159.             ((Throwable)var16).printStackTrace();
  160.          }
  161.       } catch (Exception var17) {
  162.          ((Throwable)var17).printStackTrace();
  163.       }
  164.    }
  165.  
  166.    public boolean closePort() {
  167.       if (this.field_1 == null) {
  168.          return false;
  169.       } else {
  170.          try {
  171.             this.field_1.print("QUIT\r\n");
  172.             this.expect("221", "quit");
  173.             return true;
  174.          } catch (Exception var6) {
  175.             this.result = ((Throwable)var6).getMessage();
  176.             ((Throwable)var6).printStackTrace();
  177.  
  178.             try {
  179.                if (this.field_0 != null) {
  180.                   this.field_0.close();
  181.                }
  182.             } catch (Exception var5) {
  183.                ((Throwable)var5).printStackTrace();
  184.                this.result = ((Throwable)var5).getMessage();
  185.             }
  186.  
  187.             return false;
  188.          }
  189.       }
  190.    }
  191.  
  192.    public JDPSendMail(String var1) {
  193.       this.mailhost = var1;
  194.       if (!this.openPort()) {
  195.          System.out.println("Mail port open failed.");
  196.       }
  197.  
  198.    }
  199.  
  200.    boolean openPort() {
  201.       this.field_0 = null;
  202.  
  203.       try {
  204.          this.field_0 = new Socket(this.mailhost, this.port);
  205.          this.field_1 = new PrintStream(this.field_0.getOutputStream());
  206.          this.field_2 = new DataInputStream(this.field_0.getInputStream());
  207.          this.expect("220", "no greeting");
  208.          String var1 = InetAddress.getLocalHost().toString();
  209.          this.field_1.print("HELO " + var1 + "\r\n");
  210.          this.expect("250", "helo");
  211.          this.field_1.print("RSET " + var1 + "\r\n");
  212.          this.expect((String)null, "rset");
  213.          String var3 = "Hello ";
  214.          int var2;
  215.          if ((var2 = this.lastline.indexOf(var3)) != -1) {
  216.             var1 = this.lastline.substring(var2 + var3.length());
  217.             var1 = var1.substring(0, var1.indexOf(32));
  218.          }
  219.  
  220.          return true;
  221.       } catch (Exception var5) {
  222.          this.result = ((Throwable)var5).getMessage();
  223.          ((Throwable)var5).printStackTrace();
  224.          return false;
  225.       }
  226.    }
  227. }
  228.