Mendapatkan kesalahan 'Permintaan Buruk' dengan payload berikut.
cosnt msg = {
"to": "[email protected]",
"from": "[email protected]",
"subject": "Support Pay Transparency at PayCheck",
"templateId": "24ae3147-4faa-4380-8613-c5be144f4542",
"customArgs": {
"ally_id": "cj6zlh7yd000001qir4r5suuk"
}
};
sgMail.send(msg)
{
"message": "Bad Request",
"code": 400,
"response": {
"headers": {
"server": "nginx",
"date": "Wed, 30 Aug 2017 22:30:41 GMT",
"content-type": "application/json",
"content-length": "365",
"connection": "close",
"access-control-allow-origin": "https://sendgrid.api-docs.io",
"access-control-allow-methods": "POST",
"access-control-allow-headers": "Authorization, Content-Type, On-behalf-of, x-sg-elas-acl",
"access-control-max-age": "600",
"x-no-cors-reason": "https://sendgrid.com/docs/Classroom/Basics/API/cors.html"
},
"body": {
"errors": [
{
"message": "Unless a valid template_id is provided, the content parameter is required. There must be at least one defined content block. We typically suggest both text/plain and text/html blocks are included, but only one block is required.",
"field": "content",
"help": "http://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.content"
}
]
}
}
}
Dalam dokumentasi tertulis templateId
tetapi dalam pesan kesalahan tertulis template_id
. Saya sudah mencoba keduanya dan menerima pesan kesalahan yang sama. Saya melampirkan tangkapan layar layar templat saya sebagai pemeriksaan kewarasan untuk memastikan saya telah mengonfigurasi dengan benar di sendgrid.
@onesien node baru JS mailer API adalah case agnostik, jadi Anda dapat menggunakan templateId
atau template_id
. Casing unta lebih umum di tanah JS, oleh karena itu kami telah menambahkan dukungan untuk itu, sementara API itu sendiri menggunakan kotak ular.
Saya akan melihat apa yang terjadi dengan ID template
Hai @onesien ,
Anda mungkin juga ingin memeriksa dengan dukungan . Saya pikir masalahnya mungkin terkait dengan editor template lama.
Bisakah Anda juga mencoba membuat template baru dan menggunakan ID itu?
Salam hangat,
Elmer
@thinkingserious dapatkah Anda memeriksa ini di pihak Anda? Tampaknya kami mengirimkan parameter template_id
dengan benar dengan permintaan tersebut. Saya baru saja membuat template baru dan mengalami masalah ini juga.
@jamur_kejang
Pengujian lokal saya berfungsi, tetapi saya hanya memiliki template baru di akun kami.
Saya akan memeriksa ulang
Tidak, saya menggunakan template baru, yang baru dibuat, mendapatkan masalah yang sama
Yang berikut berfungsi untuk saya (menggunakan versi v6.1.1) mengikuti contoh di sini :
// Setup sendgrid api
const sendGridMail = require('@sendGrid/mail');
sendGridMail.setApiKey(process.env.SENDGRID_API_KEY);
sendGridMail.setSubstitutionWrappers('-', '-');
//build object
var mailOptions = {
personalizations:[{
to: '[email protected]',
substitutions: {'name':'John', 'city':'Denver'}
}],
from: '[email protected]',
reply_to: '[email protected]',
subject: 'Hello',
html: 'email text goes here',
templateId: '13b8f94f-bcae-4ec6-b752-70d6cb59f932'
};
//send
sendGridMail.send(mailOptions);
Ah, saya pikir kami memiliki bug lama yang muncul kembali, di mana API memerlukan blok konten dalam semua kasus. Jadi ini berhasil:
// Setup sendgrid api
const sendGridMail = require('@sendGrid/mail');
sendGridMail.setApiKey(process.env.SENDGRID_API_KEY);
sendGridMail.setSubstitutionWrappers('-', '-');
//build object
var mailOptions = {
to: '[email protected]',
from: '[email protected]',
reply_to: '[email protected]',
subject: 'Hello',
templateId: '13b8f94f-bcae-4ec6-b752-70d6cb59f932',
html: ' ',
substitutions: {
name: 'Some One',
city: 'Denver',
}
};
//send
sendGridMail.send(mailOptions);
tapi bukan ini:
// Setup sendgrid api
const sendGridMail = require('@sendGrid/mail');
sendGridMail.setApiKey(process.env.SENDGRID_API_KEY);
sendGridMail.setSubstitutionWrappers('-', '-');
//build object
var mailOptions = {
to: '[email protected]',
from: '[email protected]',
reply_to: '[email protected]',
subject: 'Hello',
templateId: '13b8f94f-bcae-4ec6-b752-70d6cb59f932',
substitutions: {
name: 'Some One',
city: 'Denver',
}
};
//send
sendGridMail.send(mailOptions);
Memeriksa secara internal ...
Saya harus menambahkan blok konten untuk mendapatkan templat yang akan dikirim. Saya mendapatkan Permintaan _Bad (400) "Kecuali jika template_id yang valid disediakan, parameter konten diperlukan. Setidaknya harus ada satu blok konten yang ditentukan ..." _ saat menggunakan template yang dibuat di editor html baru.
sgMail.setApiKey(sgKey);
sgMail.setSubstitutionWrappers('-', '-');
var msg: any = {
to: email,
from: '[email protected]',
templateId: 'xxxxxxx',
substitutions: {
verifyUrl: createAccountLink
}
};
sgMail.send(msg)
Jika saya menambahkan blok konten, email template dikirim sebagai format di editor html.
sgMail.setApiKey(sgKey);
sgMail.setSubstitutionWrappers('-', '-');
var msg: any = {
to: email,
from: '[email protected]',
content: [{"type":"text/html","value":"0"}],
templateId: 'xxxxxx',
substitutions: {
verifyUrl: createAccountLink
}
};
sgMail.send(msg)
Oke, saya biarkan terbuka sebagai bug.
Dugaan saya adalah SDK ini menambahkan objek konten kosong jika tidak disetel. Saya rasa kita perlu melewatkan fungsi-fungsi ini ketika html dan txt tidak disetel.
Untuk saat ini, solusi di atas akan melakukan apa yang Anda butuhkan.
@Serius Saya pikir Anda benar. Saya membaca dokumen API dan mengira bidang itu wajib. Itu hanya memiliki komentar yang tersembunyi dengan baik (yang ditata dengan luar biasa!) Yang saya lewatkan:
Saya akan membuat PR untuk mengatasi ini!
Hehe, terima kasih Adam!
PR sudah habis, ini harus memperbaiki masalah dan tidak mengirim bidang konten dengan permintaan jika tidak ada konten yang disediakan.
Terima kasih atas bantuannya mengintip. Saya benar-benar kehilangan akal. Saya akhirnya menemukan solusinya larut malam dan datang ke sini untuk melaporkan lebih banyak informasi, tetapi sepertinya Anda semua sudah melakukannya :-)
Maaf soal itu @onesien ,
Perbaikan baru saja didorong ke npm (v6.1.2).
Saya menggunakan kode kata demi kata dari respons @thinkingserious dan saya masih mengalami masalah.
Saya hanya mencoba mendapatkan substitusi paling dasar dalam template yang saya buat di sengrid untuk dikirim. Tanggapan di CloudWatch (karena ini berjalan di Lambda) ditampilkan sebagai 202 tetapi email yang saya terima adalah: A message was received from this address by our systems that had errors in the smtpapi header, and cannot be processed. The error detected was: The template id must be a valid template id for your account.
Apa yang saya lakukan salah di sini guys? Saya mencoba menyaring dokumen sendgrid tetapi semuanya terasa sangat sedikit.
Bagaimana Anda mengirimkan ID template? Apakah melalui variabel lingkungan saat lambda dipanggil?
terima kasih untuk balasan cepat @cbilliau - tidak dalam kasus saya string template di-hardcode karena saya hanya mencoba untuk mendapatkan perancah fungsional di antara ujung depan dan belakang. Contoh saya verbatim adalah:
const sgMail = require("@sendgrid/mail");
sgMail.setApiKey(
"XXXXX"
);
sgMail.setSubstitutionWrappers("%", "%"); // Configure the substitution tag wrappers globally
const msg = {
to: formFields.toEmail,
from: formFields.fromEmail,
subject: "Hello world",
text: "test",
html: "<p>test</p>",
templateId: "be2cc0da-5b2c-428f-8e45-c140f6cfb6eb",
substitutions: {
name1: formFields.fromName,
name2: formFields.fromName,
date: formFields.date
}
};
sgMail.send(msg);
@tetreault Lihat jawaban saya di atas, saya menambahkan content: [{"type":"text/html","value":"0"}],
ke fungsi saya dan berhasil. Tidak diketahui mengapa.
baru mencobanya, sayangnya tidak merubah hasil akhirnya @cbilliau :(. Dapat email yang sama kembali:
A message was received from this address by our systems that had errors in the smtpapi header, and cannot be processed.
The error detected was: The template id must be a valid template id for your account. You provided be2cc0da-5b2c-428f-8e45-c140f6cfb6eb
wow biarkan aku mundur sebentar
Telapak tangan total, memperbaiki ujung saya dan semoga berhasil.
kk - mengkonfirmasikan kerja sekarang, terutama dengan menggunakan content: [{ type: "text/html", value: "0" }]
garis yang @cbilliau disebutkan 👍
Komentar yang paling membantu
Terima kasih atas bantuannya mengintip. Saya benar-benar kehilangan akal. Saya akhirnya menemukan solusinya larut malam dan datang ke sini untuk melaporkan lebih banyak informasi, tetapi sepertinya Anda semua sudah melakukannya :-)