RestClient mailgun error "message": параметр "from" отсутствует "
Я использую RestClient в своем приложении rails для отправки электронных писем. Следующая команда Curl работает:
curl -s "https://api:key-XYZ@api.mailgun.net/v2/sandbox30000.mailgun.org/messages" \
-F from='Mailgun Sandbox <postmaster@sandbox30000.mailgun.org>' \
-F to='me <my-email-id@gmail.com>'\
-F subject='Hello XYZ' \
-F text='Congratulations, you just sent an email with Mailgun! You are truly awesome!'
Но когда я пытаюсь сделать то же самое с помощью RestClient, я получаю следующее сообщение об ошибке:
error response !!{
"message": "'from' parameter is missing"
}
сообщение об ошибке!!400 Bad Request
Звонок RestClient:
RestClient::Request.execute(
:url => "https://api:key-XYZ@api.mailgun.net/v2/sandbox0000.mailgun.org/messages",
:method => :post,
:from => 'Mailgun Sandbox <postmaster@sandbox30000.mailgun.org>',
:sender => 'Mailgun Sandbox <postmaster@sandbox30000.mailgun.org>',
:to => "my-email-id@gmail.com",
:subject => "Hello XYZ",
:text => "Text body",
:"h:X-My-Header" => "www/mailgun-email-send",
:verify_ssl => false)
1 ответ
Решение
Когда вы используете Request.execute с несколькими аргументами полезной нагрузки и заголовками, вам нужно будет сообщить RestClient, какой это тип данных.
Вам необходимо выполнить эти три исправления, чтобы получить эквивалентный запрос curl с RestClient.
- Сгруппируйте все поля сообщений в хэш полезной нагрузки.
- Добавьте один заголовок в заголовок хэша
- Скажите RestClient, что полезная нагрузка должна быть отправлена как составная часть.
Измененный запрос:
RestClient::Request.execute(
:url => "https://api:key-XYZ@api.mailgun.net/v2/sandbox0000.mailgun.org/messages",
:method => :post,
:payload => {
:from => 'Mailgun Sandbox <postmaster@sandbox30000.mailgun.org>',
:sender => 'Mailgun Sandbox <postmaster@sandbox30000.mailgun.org>',
:to => "my-email-id@gmail.com",
:subject => "Hello XYZ",
:text => "Text body",
:multipart => true
},
:headers => {
:"h:X-My-Header" => "www/mailgun-email-send"
},
:verify_ssl => false
)