以下是使用Java进行SMTP发信的示例代码,其中包括将标题和内容进行Base64编码的实现。\n\njava\nimport java.io.*;\nimport java.net.Socket;\nimport java.nio.charset.StandardCharsets;\nimport java.util.Base64;\n\npublic class SMTPExample {\n\n public static void main(String[] args) throws IOException {\n String host = "smtp.example.com"; // SMTP服务器地址\n int port = 25; // SMTP服务器端口号\n\n String from = "sender@example.com"; // 发件人邮箱\n String to = "recipient@example.com"; // 收件人邮箱\n String subject = "Hello, World!"; // 邮件主题\n String content = "This is the content of the email."; // 邮件内容\n\n // 连接SMTP服务器\n Socket socket = new Socket(host, port);\n BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));\n BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));\n\n // 读取服务器返回的欢迎信息\n String response = reader.readLine();\n System.out.println(response);\n\n // 发送HELO命令\n writer.write("HELO " + host + "\r\n");\n writer.flush();\n response = reader.readLine();\n System.out.println(response);\n\n // 发送认证信息\n writer.write("AUTH LOGIN\r\n");\n writer.flush();\n response = reader.readLine();\n System.out.println(response);\n\n String username = "your_username"; // SMTP账号\n String password = "your_password"; // SMTP密码\n\n writer.write(Base64.getEncoder().encodeToString(username.getBytes(StandardCharsets.UTF_8)) + "\r\n");\n writer.flush();\n response = reader.readLine();\n System.out.println(response);\n\n writer.write(Base64.getEncoder().encodeToString(password.getBytes(StandardCharsets.UTF_8)) + "\r\n");\n writer.flush();\n response = reader.readLine();\n System.out.println(response);\n\n // 发送发件人信息\n writer.write("MAIL FROM:<" + from + ">\r\n");\n writer.flush();\n response = reader.readLine();\n System.out.println(response);\n\n // 发送收件人信息\n writer.write("RCPT TO:<" + to + ">\r\n");\n writer.flush();\n response = reader.readLine();\n System.out.println(response);\n\n // 开始邮件内容\n writer.write("DATA\r\n");\n writer.flush();\n response = reader.readLine();\n System.out.println(response);\n\n // 发送邮件头部\n writer.write("From: <" + from + ">\r\n");\n writer.write("To: <" + to + ">\r\n");\n writer.write("Subject: =?UTF-8?B?" + Base64.getEncoder().encodeToString(subject.getBytes(StandardCharsets.UTF_8)) + "?=\r\n");\n writer.write("Content-Type: text/plain; charset=UTF-8\r\n");\n writer.write("\r\n");\n writer.write(content + "\r\n");\n\n // 结束邮件内容\n writer.write(".\r\n");\n writer.flush();\n response = reader.readLine();\n System.out.println(response);\n\n // 发送QUIT命令\n writer.write("QUIT\r\n");\n writer.flush();\n response = reader.readLine();\n System.out.println(response);\n\n // 关闭连接\n reader.close();\n writer.close();\n socket.close();\n }\n}\n\n\n在上述代码中,将邮件主题和内容使用Base64进行编码,以确保在传输过程中不会出现乱码。编码后的邮件主题需要在开头添加"=?UTF-8?B?",并在结尾添加"=?",以指定编码方式为UTF-8,并使用Base64编码。

Java SMTP发送邮件示例:无需第三方库,附Base64编码标题和内容

原文地址: https://www.cveoy.top/t/topic/pJKT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录