Advertisement
Guest User

Untitled

a guest
Nov 28th, 2014
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.66 KB | None | 0 0
  1. import java.io.DataOutputStream;
  2. import java.io.IOException;
  3. import java.net.Socket;
  4. import java.util.Scanner;
  5.  
  6. public class Email {
  7.  
  8.   private Provider provider;
  9.     private String owner;
  10.     private String password;
  11.  
  12.     public Email(Provider provider, String owner, String password) {
  13.         this.provider = provider;
  14.         this.owner = owner;
  15.         this.password = password;
  16.     }
  17.  
  18.     public void sendEmail(String to, String content, String subject, int port) {
  19.  
  20.         String HOST = provider.getHost();
  21.  
  22.         String PASSWORD = Base64Coder.encodeString(password);
  23.         String USER = Base64Coder.encodeString(owner);
  24.  
  25.         try {
  26.             Socket socket = new Socket(HOST, port);
  27.             DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
  28.             Scanner scanner = new Scanner(socket.getInputStream());
  29.  
  30.             dos.writeBytes("HELO\r\n");
  31.             dos.writeBytes("AUTH LOGIN");
  32.             dos.writeBytes("\r\n");
  33.             dos.writeBytes(USER);
  34.             dos.writeBytes("\r\n");
  35.             dos.writeBytes(PASSWORD);
  36.             dos.writeBytes("\r\n");
  37.             dos.writeBytes("MAIL FROM:<" + owner + ">\r\n");
  38.             dos.writeBytes("\r\n");
  39.             dos.writeBytes("RCPT TO: <" + to + ">\r\n");
  40.             dos.writeBytes("DATA\r\n");
  41.             dos.writeBytes("Subject: " + subject + "\r\n");
  42.             dos.writeBytes(content);
  43.             dos.writeBytes("\r\n.\r\n");
  44.             dos.writeBytes("QUIT\r\n");
  45.  
  46.             dos.flush();
  47.  
  48.             String responseline;
  49.             while ((responseline = scanner.next()) != null) {
  50.                 System.out.println(responseline);
  51.             }
  52.  
  53.             scanner.close();
  54.             dos.close();
  55.             socket.close();
  56.         } catch (IOException ex) {
  57.             System.err.println(ex);
  58.         }
  59.     }
  60.  
  61.     public void sendEmail(String to, String content, String subject) {
  62.         sendEmail(to, content, subject, 25); // Use default port
  63.     }
  64.  
  65.     public enum Provider {
  66.  
  67.         YAHOO("smtp.mail.yahoo.com"),
  68.         GMAIL("smtp.gmail.com");
  69.         private String host;
  70.  
  71.         Provider(String host) {
  72.             this.host = host;
  73.  
  74.         }
  75.  
  76.         public String getHost() {
  77.             return host;
  78.         }
  79.     }
  80.  
  81.     /*
  82.      * Base 64 encoding implementation from http://www.source-code.biz/base64coder/java/
  83.      */
  84.     static class Base64Coder {
  85.  
  86.         private static final char[] map1 = new char[64];
  87.  
  88.         static {
  89.             int i = 0;
  90.             for (char c = 'A'; c <= 'Z'; c++) {
  91.                 map1[i++] = c;
  92.             }
  93.             for (char c = 'a'; c <= 'z'; c++) {
  94.                 map1[i++] = c;
  95.             }
  96.             for (char c = '0'; c <= '9'; c++) {
  97.                 map1[i++] = c;
  98.             }
  99.             map1[i++] = '+';
  100.             map1[i++] = '/';
  101.         }
  102.         // Mapping table from Base64 characters to 6-bit nibbles.
  103.         private static final byte[] map2 = new byte[128];
  104.  
  105.         static {
  106.             for (int i = 0; i < map2.length; i++) {
  107.                 map2[i] = -1;
  108.             }
  109.             for (int i = 0; i < 64; i++) {
  110.                 map2[map1[i]] = (byte) i;
  111.             }
  112.         }
  113.  
  114.         public static String encodeString(String s) {
  115.             return new String(encode(s.getBytes()));
  116.         }
  117.  
  118.         public static char[] encode(byte[] in) {
  119.             return encode(in, 0, in.length);
  120.         }
  121.  
  122.         public static char[] encode(byte[] in, int iLen) {
  123.             return encode(in, 0, iLen);
  124.         }
  125.  
  126.         public static char[] encode(byte[] in, int iOff, int iLen) {
  127.             int oDataLen = (iLen * 4 + 2) / 3;
  128.             int oLen = ((iLen + 2) / 3) * 4;
  129.             char[] out = new char[oLen];
  130.             int ip = iOff;
  131.             int iEnd = iOff + iLen;
  132.             int op = 0;
  133.             while (ip < iEnd) {
  134.                 int i0 = in[ip++] & 0xff;
  135.                 int i1 = ip < iEnd ? in[ip++] & 0xff : 0;
  136.                 int i2 = ip < iEnd ? in[ip++] & 0xff : 0;
  137.                 int o0 = i0 >>> 2;
  138.                 int o1 = ((i0 & 3) << 4) | (i1 >>> 4);
  139.                 int o2 = ((i1 & 0xf) << 2) | (i2 >>> 6);
  140.                 int o3 = i2 & 0x3F;
  141.                 out[op++] = map1[o0];
  142.  
  143.                 out[op++] = map1[o1];
  144.                 out[op] = op < oDataLen ? map1[o2] : '=';
  145.                 op++;
  146.                 out[op] = op < oDataLen ? map1[o3] : '=';
  147.                 op++;
  148.             }
  149.             return out;
  150.         }
  151.  
  152.         private Base64Coder() {
  153.         }
  154.     }
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement