1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| import java.io.*; import java.net.InetSocketAddress; import java.net.Socket; import java.nio.charset.StandardCharsets; import java.util.Base64; public class MyMail { public static void sendMail(String host, int port, String username, String password, String receiver, String ccReceiver, String subject, String body) throws IOException { Socket socket = new Socket(); InetSocketAddress inetSocketAddress = new InetSocketAddress(host, port); socket.connect(inetSocketAddress); OutputStream outputStream = socket.getOutputStream(); InputStream inputStream = socket.getInputStream(); readInputStream(inputStream); sendCommand(outputStream, "HELO " + host); readInputStream(inputStream); sendCommand(outputStream, "AUTH LOGIN"); readInputStream(inputStream); sendCommand(outputStream, base64Encode(username)); readInputStream(inputStream); sendCommand(outputStream, base64Encode(password)); readInputStream(inputStream); sendCommand(outputStream, "MAIL FROM:<" + username + ">"); readInputStream(inputStream); sendCommand(outputStream, "RCPT TO:<" + receiver + ">"); readInputStream(inputStream); sendCommand(outputStream, "RCPT TO:<" + ccReceiver + ">"); readInputStream(inputStream); sendCommand(outputStream, "DATA"); readInputStream(inputStream); sendCommand(outputStream, "Subject: " + subject); sendCommand(outputStream, body); sendCommand(outputStream, "."); readInputStream(inputStream); sendCommand(outputStream, "QUIT"); readInputStream(inputStream); } public static String base64Encode(String text) { return Base64.getEncoder().encodeToString(text.getBytes()); } private static void readInputStream(InputStream inputStream) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); StringBuilder response = new StringBuilder(); String line; while ((line = bufferedReader.readLine()) != null) { response.append(line).append("\n"); if (line.length() >= 3 && line.charAt(3) == ' ') { break; } } System.out.println(response.toString().trim()); } private static void sendCommand(OutputStream outputStream, String command) throws IOException { BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8)); bufferedWriter.write(command + "\r\n"); bufferedWriter.flush(); } public static void main(String[] args) { try { sendMail("smtp.163.com", 25, "wuyifan2@163.com", "YNxRKcadfsdXsdfa", "liyifeng@163.com", "123766119@qq.com", "Greet day", "Today is a great day!"); } catch (Exception e) { e.printStackTrace(); System.out.println("邮件发送失败"); } } }
|