在Softlayer Portal中,我订购了电子邮件递送服务。我可以在列表中看到它。但如何用java api发送电子邮件。
我尝试使用以下代码发送电子邮件。
Email email = new Email();
email.setfrom();
email.setBody();
email.setTo();
Boolean result = service.sendEmail(email);`
但它显示的错误是“调用服务需要ID”
如果您共享示例代码,它也会很有帮助。 谢谢
答案 0 :(得分:1)
要使用sendEmail方法,必须指定一个init参数(SoftLayer_Network_Message_Delivery_Email_SendgridInitParameters),您可以在SoftLayer_Network_Message_Delivery_Email_Sendgrid::sendEmail方法的" Required Headers" 部分中看到这一点,您可以获得有关init参数here的更多信息。
所以,你可以得到" SoftLayer_Network_Message_Delivery_Email_Sendgrid"对象使用以下方法:SoftLayer_Account::getNetworkMessageDeliveryAccounts,这里是Rest请求:
https://$username:$apiKey@api.softlayer.com/rest/v3/SoftLayer_Account/getNetworkMessageDeliveryAccounts
Method: Get
你会得到这样的结果:
0: {
"accountId": 123456
"createDate": "2015-05-15T06:35:56+12:00"
"id": 24564
"modifyDate": "2016-01-08T05:59:57+11:00"
"password": "Password123*"
"typeId": 21
"username": "newemail@softlayer.com"
"vendorId": 1
"emailAddress": "email@softlayer.com"
"smtpAccess": "1"
}
所以,你需要指定" id"在您正在使用的服务中(SoftLayer_Network_Message_Delivery_Email_Sendgrid)。它应该在java中看起来像这样:
Long sendGridId = new Long(24564);
Sendgrid.Service sendgridService = Sendgrid.service(client, sendGridId);
它对我来说没有用,似乎SoftLayer API Client for Java在指定" SoftLayer_Network_Message_Delivery_Email_Sendgrid"的初始化参数方面存在问题。服务。如果您无法指定此SoftLayer API Client for Java Issues,则可以对其进行验证并提交问题。
事实上,我可以提供一个正常工作的休息请求:
https://$user:$apiKey@api.softlayer.com/rest/v3/SoftLayer_Network_Message_Delivery_Email_Sendgrid/24564/sendEmail
Method: Post
{
"parameters":[
{
"body":"set me",
"from":"set me",
"to":"set me",
"subject":"set me"
}
]
}
参考文献: