如何发送消息 java
发送消息的 Java 实现方法
在 Java 中发送消息可以通过多种方式实现,具体取决于消息的类型和发送的目标。以下是几种常见的实现方法:
使用 Java Mail API 发送电子邮件
需要添加 Java Mail API 的依赖:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.6.2</version>
</dependency>
发送电子邮件的代码示例:

import javax.mail.*;
import javax.mail.internet.*;
import java.util.Properties;
public class EmailSender {
public static void sendEmail(String to, String from, String host,
String subject, String text) {
Properties properties = System.getProperties();
properties.setProperty("mail.smtp.host", host);
Session session = Session.getDefaultInstance(properties);
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(subject);
message.setText(text);
Transport.send(message);
} catch (MessagingException mex) {
mex.printStackTrace();
}
}
}
使用 WebSocket 发送实时消息
需要添加 Java WebSocket API 的依赖:
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
</dependency>
WebSocket 端点示例:

@ServerEndpoint("/message")
public class MessageEndpoint {
@OnOpen
public void onOpen(Session session) {
System.out.println("Connection opened: " + session.getId());
}
@OnMessage
public void onMessage(String message, Session session) {
try {
session.getBasicRemote().sendText("Echo: " + message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 RabbitMQ 发送消息队列
需要添加 RabbitMQ Java 客户端依赖:
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.12.0</version>
</dependency>
发送消息到队列的示例:
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
public class MessageQueueSender {
private final static String QUEUE_NAME = "hello";
public static void send(String message) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
try (Connection connection = factory.newConnection();
Channel channel = connection.createChannel()) {
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
}
}
}
使用 Java 套接字发送网络消息
TCP 套接字客户端示例:
import java.io.*;
import java.net.*;
public class SocketSender {
public static void sendMessage(String host, int port, String message) {
try (Socket socket = new Socket(host, port);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true)) {
out.println(message);
} catch (UnknownHostException e) {
System.err.println("Unknown host: " + host);
} catch (IOException e) {
System.err.println("I/O error for " + host);
}
}
}
以上方法可以根据具体需求选择使用,每种方式适用于不同的消息传递场景。






