importcom.amazonaws.auth.AWSCredentials;importcom.amazonaws.auth.AWSCredentialsProvider;importcom.amazonaws.services.sns.AmazonSNS;importcom.amazonaws.services.sns.AmazonSNSClientBuilder;importcom.amazonaws.services.sns.model.MessageAttributeValue;importcom.amazonaws.services.sns.model.PublishRequest;importcom.amazonaws.services.sns.model.PublishResult;importjava.util.HashMap;importjava.util.Map;public classShortMessage {private MapsmsAttributes;public MapgetDefaultSMSAttributes() {if (smsAttributes == null) {
smsAttributes= new HashMap<>();
smsAttributes.put("AWS.SNS.SMS.SenderID", newMessageAttributeValue()
.withStringValue("1")
.withDataType("String"));
smsAttributes.put("AWS.SNS.SMS.MaxPrice", newMessageAttributeValue()
.withStringValue("0.05")
.withDataType("Number"));
smsAttributes.put("AWS.SNS.SMS.SMSType", newMessageAttributeValue()
.withStringValue("Transactional")
.withDataType("String"));
}returnsmsAttributes;
}publicPublishResult sendSMSMessage(String phoneNumber, String message) {returnsendSMSMessage(phoneNumber, message, getDefaultSMSAttributes());
}public PublishResult sendSMSMessage(String phoneNumber, String message, MapsmsAttributes) {
AWSCredentials awsCredentials= newAWSCredentials() {
@OverridepublicString getAWSAccessKeyId() {return "xxxxxxxx"; //带有发短信权限的 IAM 的 ACCESS_KEY
}
@OverridepublicString getAWSSecretKey() {return "xxxxxxxx"; //带有发短信权限的 IAM 的 SECRET_KEY
}
};
AWSCredentialsProvider provider= newAWSCredentialsProvider() {
@OverridepublicAWSCredentials getCredentials() {returnawsCredentials;
}
@Overridepublic voidrefresh() {
}
};
AmazonSNS amazonSNS= null;try{
amazonSNS= AmazonSNSClientBuilder.standard().withCredentials(provider).withRegion("us-east-1").build();
}catch(Exception e) {
}returnamazonSNS.publish(newPublishRequest()
.withMessage(message)
.withPhoneNumber(phoneNumber)
.withMessageAttributes(smsAttributes)
);
}public static voidmain(String[] args) {//AmazonSNSClient client = new AmazonSNSClient(credentialsProvider);//AWSCredentialsProviderChain chain = new AWSCredentialsProviderChain(credentialsProvider);//chain.setReuseLastProvider(true);//credentialsProvider.getCredentials();
ShortMessage shortMessage = newShortMessage();
PublishResult publishResult= shortMessage.sendSMSMessage("+8613958942952", "test1");
System.out.println(publishResult);
}
}