home *** CD-ROM | disk | FTP | other *** search
- import java.io.DataInputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FilterInputStream;
- import java.io.InputStream;
- import java.io.PrintStream;
- import java.io.StringBufferInputStream;
- import java.net.InetAddress;
- import java.net.Socket;
- import java.util.StringTokenizer;
-
- public class JDPSendMail {
- String result = "";
- String lastline;
- short port = 25;
- int maxCharLimit = 70;
- // $FF: renamed from: s java.net.Socket
- Socket field_0;
- // $FF: renamed from: p java.io.PrintStream
- PrintStream field_1;
- // $FF: renamed from: in java.io.DataInputStream
- DataInputStream field_2;
- String mailhost;
- String prevSender = "";
- String lastAttachment;
- byte[] fileContents;
-
- public boolean mailMessage(String var1, String var2, String var3, String var4) {
- return this.mailMessage(var1, var2, var3, var4, (String)null);
- }
-
- public boolean mailMessage(String var1, String var2, String var3, String var4, String var5) {
- if (var1 == null) {
- return false;
- } else {
- try {
- this.field_1.print("MAIL FROM:<" + var2 + ">\r\n");
- this.expect("250", "mail from");
- this.prevSender = var2;
- StringTokenizer var6 = new StringTokenizer(var1, ",");
-
- while(var6.hasMoreTokens()) {
- this.field_1.print("RCPT TO:<" + var6.nextToken() + ">\r\n");
- this.expect("250", "rcpt to");
- }
-
- this.field_1.print("DATA\r\n");
- this.expect("354", "data");
- this.field_1.print("From: " + var2 + "\n");
- this.field_1.print("To: " + var1 + "\n");
- this.field_1.print("Subject: " + var3);
- if (var5 != null && !var5.equals("")) {
- this.field_1.print("\n");
- this.lastAttachment = var5;
- int var11 = var5.lastIndexOf(File.separator);
- if (var11 > 0) {
- var5 = var5.substring(var11 + 1);
- }
-
- String var12 = "SimpleBoundary";
- this.field_1.print("MIME-Version: 1.0\n");
- this.field_1.print("Content-Type: multipart/mixed; boundary=\"" + var12 + "\"\n");
- this.field_1.print("--" + var12 + "\n");
- this.field_1.print("Content-Type: text/plain; charset=\"us-ascii\"\n\n");
- this.field_1.print(var4 + "\n");
- this.field_1.print("--" + var12 + "\n");
- this.field_1.print("Content-Type: application/octet-stream; name=\"" + var5 + "\"\n");
- this.field_1.print("Content-Transfer-Encoding: base64\n");
- this.field_1.print("Content-Disposition: attachment; filename=\"" + var5 + "\"\n");
- this.field_1.print("Content-Description: Attached file\n\n");
- this.sendAttachment(this.lastAttachment);
- this.field_1.print("--" + var12 + "--\n\n");
- } else {
- this.field_1.print("\r\n\r\n");
-
- String var8;
- for(DataInputStream var7 = new DataInputStream(new StringBufferInputStream(var4)); ((FilterInputStream)var7).available() > 0; this.field_1.println(var8)) {
- var8 = var7.readLine();
- if (var8.equals(".")) {
- var8 = "..";
- }
- }
- }
-
- this.field_1.print("\n.\n");
- this.expect("250", "end of data");
- return true;
- } catch (Exception var10) {
- this.result = ((Throwable)var10).getMessage();
- this.closePort();
- this.openPort();
- return false;
- }
- }
- }
-
- void expect(String var1, String var2) throws Exception {
- this.lastline = this.field_2.readLine();
- if (var1 != null && !this.lastline.startsWith(var1)) {
- throw new Exception(var2 + ":" + this.lastline);
- } else {
- while(this.lastline.startsWith(var1 + "-")) {
- this.lastline = this.field_2.readLine();
- }
-
- }
- }
-
- void sendAttachment(String var1) {
- char var5 = File.separator.charAt(0);
- byte var7 = 70;
- char var8 = '뿜';
-
- try {
- var1.replace('/', var5);
- var1.replace('\\', var5);
- FileInputStream var4 = new FileInputStream(var1);
- InputStream var2 = (InputStream)var4;
- new DataInputStream(var2);
- int var11 = var2.available();
- if (var11 <= 0 || var11 > var8) {
- var11 = var8;
- }
-
- byte[] var6 = new byte[var11];
- int var12 = 0;
-
- try {
- int var13;
- while((var13 = var2.read(var6, 0, var11)) > 0) {
- var12 += var13;
- this.fileContents = JDPEncode.base64Encode(var6);
- int var14 = this.fileContents.length;
- int var9 = var14 / var7;
-
- int var10;
- for(var10 = 0; var10 < var9; ++var10) {
- this.field_1.write(this.fileContents, var10 * var7, var7);
- this.field_1.print("\n");
- }
-
- if (var9 * var7 < this.fileContents.length) {
- this.field_1.write(this.fileContents, var10 * var7, this.fileContents.length - var10 * var7);
- this.field_1.print("\n");
- }
-
- var11 = var2.available();
- if (var11 <= 0 || var11 > var8) {
- var11 = var8;
- }
-
- if (var11 != var8) {
- var6 = new byte[var11];
- }
- }
-
- var2.close();
- } catch (Exception var16) {
- ((Throwable)var16).printStackTrace();
- }
- } catch (Exception var17) {
- ((Throwable)var17).printStackTrace();
- }
- }
-
- public boolean closePort() {
- if (this.field_1 == null) {
- return false;
- } else {
- try {
- this.field_1.print("QUIT\r\n");
- this.expect("221", "quit");
- return true;
- } catch (Exception var6) {
- this.result = ((Throwable)var6).getMessage();
- ((Throwable)var6).printStackTrace();
-
- try {
- if (this.field_0 != null) {
- this.field_0.close();
- }
- } catch (Exception var5) {
- ((Throwable)var5).printStackTrace();
- this.result = ((Throwable)var5).getMessage();
- }
-
- return false;
- }
- }
- }
-
- public JDPSendMail(String var1) {
- this.mailhost = var1;
- if (!this.openPort()) {
- System.out.println("Mail port open failed.");
- }
-
- }
-
- boolean openPort() {
- this.field_0 = null;
-
- try {
- this.field_0 = new Socket(this.mailhost, this.port);
- this.field_1 = new PrintStream(this.field_0.getOutputStream());
- this.field_2 = new DataInputStream(this.field_0.getInputStream());
- this.expect("220", "no greeting");
- String var1 = InetAddress.getLocalHost().toString();
- this.field_1.print("HELO " + var1 + "\r\n");
- this.expect("250", "helo");
- this.field_1.print("RSET " + var1 + "\r\n");
- this.expect((String)null, "rset");
- String var3 = "Hello ";
- int var2;
- if ((var2 = this.lastline.indexOf(var3)) != -1) {
- var1 = this.lastline.substring(var2 + var3.length());
- var1 = var1.substring(0, var1.indexOf(32));
- }
-
- return true;
- } catch (Exception var5) {
- this.result = ((Throwable)var5).getMessage();
- ((Throwable)var5).printStackTrace();
- return false;
- }
- }
- }
-