以下是使用 `smsmanager` 在 Java 中实现后台发送短信的一个示例。这里假设你已经有了AWS SDK的依赖配置在你的项目中,并且已经设置好了AWS的凭证信息(可以通过环境变量、Java系统属性、AWS凭证文件或IAM角色等方式设置)。
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.sns.AmazonSNS;
import com.amazonaws.services.sns.AmazonSNSClientBuilder;
import com.amazonaws.services.sns.model.PublishRequest;
import com.amazonaws.services.sns.model.PublishResult;
public class SMSSender {
// 这里为了示例简化,直接在代码中设置凭证,实际开发中应该通过更安全的方式配置
private static final String ACCESS_KEY = "你的AWS_ACCESS_KEY_ID";
private static final String SECRET_KEY = "你的AWS_SECRET_ACCESS_KEY";
public static void sendSMS(String phoneNumber, String message) {
// 初始化凭证
AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);
// 使用凭证构建SNS客户端
AmazonSNS snsClient = AmazonSNSClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.withRegion("你的区域ID,例如us-west-2")
.build();
// 构造发送短信的请求
PublishRequest publishRequest = new PublishRequest()
.withPhoneNumber(phoneNumber)
.withMessage(message);
try {
// 发送短信
PublishResult result = snsClient.publish(publishRequest);
// 输出发送短信的MessageId(可选)
System.out.println("MessageId: " + result.getMessageId());
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// 调用发送短信的方法
sendSMS("+8612345678901", "这是一条测试短信");
}
}
**注意**:
1. 你需要将 `"你的AWS_ACCESS_KEY_ID"` 和 `"你的AWS_SECRET_ACCESS_KEY"` 替换为你自己的AWS凭证。
2. 你需要将 `"你的区域ID,例如us-west-2"` 替换为你所使用的AWS服务所在的区域ID。
3. `sendSMS` 方法中的 `phoneNumber` 参数应该是一个符合国际号码格式的字符串,以 "+" 开头,后面跟随国家代码和手机号码,没有空格或分隔符。
4. 在生产环境中,应该避免在代码中硬编码AWS凭证,而应使用更安全的方式(如环境变量、IAM角色等)来管理凭证。
5. 这个示例假设你已经启用了SNS服务,并且具有向特定手机号码发送短信的权限。如果你遇到权限问题,请检查你的IAM策略。