MailJet无法从java电子邮件发送:(400错误请求)



我试图从我们的java项目发送一封电子邮件,但每次都会出现代码错误400。因此,我在java控制台中打印了相同的请求,并将其从Postman和相同的其他元素一起发送,然后它从Postman中工作,我收到了电子邮件,但从java中,我总是收到代码错误400坏请求,当我打开Mailjet调试模式时,内容为空。

这里是Java制作的最后一个JSON,并从Postman 注入

{
"Messages": [
{
"Variables": {
"objet": " objet",
"body": " body "
},
"From": {
"Email": "no-reply@gmail.com"
},
"To": [
{
"Email": "send@gmail.com",
"Name": ""
}
],
"TemplateID": 111111,
"TemplateLanguage": true,
"Subject": "[[data:objet:" anything"]]"
}
]
}

java代码:

/**
*  Send a message
* @return MailjetResponse
* @throws MailjetException
* @throws MailjetSocketTimeoutException
*/
public MailjetRequest sendEmailCore()  {
return new MailjetRequest(Emailv31.resource)
.property(Emailv31.MESSAGES, new JSONArray()
.put(new JSONObject()
.put(Emailv31.Message.FROM, new JSONObject()
.put("Email", senderMail)
.put("Name", senderName))
.put(Emailv31.Message.TO, getRecipientsJson())
.put(Emailv31.Message.TEMPLATEID, TEMPLATE_ID)
.put(Emailv31.Message.TEMPLATELANGUAGE, true)
.put(Emailv31.Message.SUBJECT, "[[data:objet:" anything"]]")
.put(Emailv31.Message.VARIABLES, new JSONObject()
.put("objet", " objet")
.put("mailTitle", mailTitle)
.put("body", body))));
}
private JSONArray getRecipientsJson(){
JSONArray json = new JSONArray();
for (String recipient : recipients) {
json.put(new JSONObject()
.put("Email", recipient)
.put("Name", ""));
}
return json;
}
public MailjetResponse sendLoggedMail() throws Exception {
MailjetClient client = new MailjetClient(API_KEY_PUBLIC, API_KEY_PRIVATE, new ClientOptions("v3.1"));
MailjetRequest request = sendEmailCore();
MailjetResponse response = null;
try {
client.setDebug(MailjetClient.VERBOSE_DEBUG);
log.info(request.getBody());
response = client.post(request);
}  catch (final MailjetException | MailjetSocketTimeoutException e) {

log.error("sendLoggedMail", e);
} 
return response;
}

MailJet日志:

=== HTTP Request ===
POST https://api.mailjet.com/v3.1/send
Accept-Charset:UTF-8
Accept:application/json
user-agent:mailjet-apiv3-java/v4.5.0
Content-Type:application/json
=== HTTP Response ===
Receive url: https://api.mailjet.com/v3.1/send
Status: 400
date:Tue, 01 Sep 2020 08:59:55 GMT
null:HTTP/1.1 400 Bad Request
content-length:177
x-mj-request-guid:0bb2a0ac-849d-4d80-82ed-a10a792e8d19
content-type:application/json; charset=UTF-8
Content:
null

谢谢你的帮助。

4.5.0版中连接超时的默认值太小

您可以尝试在客户端选项中设置值,如下所示:

new MailjetClient("public", "secret", new ClientOptions(8000));

或者只使用设置了默认超时值的较新版本。

我对Java Mailjet Client 4.5.0也有同样的问题。降级到v4.4.0版本时不存在此错误。

最新更新