* ПОДДЕРЖКА НАПРАВИЛА МЕНЯ СЮДА *
ДОКАЗАТЕЛЬСТВО: https://support.sendgrid.com/hc/en-us/requests/1325416?page=1
Я не могу отправить электронное письмо с библиотекой. поддержка направила меня сюда. Я пытаюсь отправить с node.js, запущенного на localhost. Сначала я попробовал пример, указанный в npm, но я получаю ошибку 401 с заголовком типа x-no-cors reason
. поэтому я попытался использовать пакет @sendgrid/mail
вместо этого и получил сообщение об ошибке:
TypeError: Cannot read property 'errors' of undefined
at ResponseError.toString (E:\songsplits\api\node_modules\@sendgrid\helpers\classes\response-error.js:45:27)
at Function.CapturedTrace.parseStackAndMessage (E:\songsplits\api\node_modules\bluebird\js\main\captured_trace.js:176:25)
at CapturedTrace.attachExtraTrace (E:\songsplits\api\node_modules\bluebird\js\main\captured_trace.js:79:32)
at Promise._attachExtraTrace (E:\songsplits\api\node_modules\bluebird\js\main\debuggability.js:102:19)
at Promise._rejectCallback (E:\songsplits\api\node_modules\bluebird\js\main\promise.js:471:10)
at E:\songsplits\api\node_modules\bluebird\js\main\promise.js:486:17
at Request.http [as _callback] (E:\songsplits\api\node_modules\@sendgrid\client\src\client.js:124:18)
at Request.self.callback (E:\songsplits\api\node_modules\request\request.js:188:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:191:7)
at Request.<anonymous> (E:\songsplits\api\node_modules\request\request.js:1171:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:188:7)
at IncomingMessage.<anonymous> (E:\songsplits\api\node_modules\request\request.js:1091:12)
at IncomingMessage.g (events.js:291:16)
at emitNone (events.js:91:20)
вот минимальный модуль для воспроизведения
email.js
const sgMail = require('@sendgrid/mail')
sgMail.setApiKey(process.env.SENDGRID_KEY);
module.exports.send = function send(html,subject,to,from){
return new Promise((resolve,reject)=>{
sgMail.send({
to,
from,
subject,
html
}).then(resolve).catch(reject);
});
};
index.js
const send = require('./mail');
send(
'<!DOCTYPE html><html><head><title>Hi</title></head><body>Hi</body></html>',
'Hi',
'[email protected]',
'[email protected]',
).then(()=>console.log('sent an email successfully!')).catch(err=>console.log(err));
просто попробовал с другим ключом, а буэно нет. иногда ошибка не возникает, и тогда ответ
Unauthorized (401)
Permission denied, wrong credentials
Привет @ r3wt!
Это проблема, с которой может помочь наша служба поддержки . Они могут помочь вникнуть в вашу учетную запись, чтобы выяснить проблему с вашим ключом (ключами).
Спасибо!
С наилучшими пожеланиями,
Элмер
@thinkingserious Это ваша группа поддержки направила меня сюда.
@ r3wt
Я знаю, что это может произойти, если вы опубликуете свой ключ API на github, потому что наша команда по обеспечению соответствия отключит ваш ключ.
Другая вещь, которая может произойти, - это если у вас включено управление IP, когда ваша учетная запись доступна только с определенных IP-адресов. Если ваш код работает на IP-адресе, которого нет в этом списке, это также вызовет ошибки.
Не могли бы вы сделать мне одолжение и создать новый ключ API с привилегиями mail / send и попробовать код еще раз?
Пока вы это делаете, не могли бы вы сообщить нам номер вашего обращения в службу поддержки?
Спасибо!!
Я вижу билет сейчас ... так что я тоже посмотрю. Спасибо!
@mbernier ключ находится в файле конфигурации в частном репо. как ваша команда сможет это обнаружить? нет опасности утечки ключа, это частный репозиторий.
теперь немного информации о моем подключении:
Так что, если он частный, то это не проблема - хотя наши команды InfoSec всегда предлагают не помещать ключи даже в частные репозитории :)
Ваше приложение должно иметь возможность отправлять электронные письма.
Не могли бы вы перейти сюда: https://sendgrid.com/docs/API_Reference/api_v3.html и попробовать отправить через вкладку «Попробовать» на этой странице документов? Если вы получите ответ об ошибке, опубликуйте ответ и ошибку здесь.
@mbernier
@mbernier, к сожалению, ошибки все еще возникают в node.js
Похоже, ваша учетная запись не активирована. Не могли бы вы войти в систему на app.sendgrid.com и посмотреть уведомления вверху страницы. Он побудит вас предоставить немного больше информации о себе, чтобы доказать, что вы хороший отправитель.
@mbernier аккаунт моих клиентов активен как минимум 2 года. Я проверил логи, и клиент активно рассылает другие рассылки и прочее? я запутался.
@mbernier после того, как я выполнил инструкции по настройке из интерактивного меню учетной записи, это сработало. так странно.
К сожалению, я не уверен, что могло случиться. Я сделал заметки в обращении в службу поддержки, поэтому надеюсь, что с их доступом они смогут предоставить нам более подробную информацию.
Я рад, что теперь он работает!
@ r3wt Я собираюсь закрыть это, сообщите нам, если у вас возникнут другие проблемы!
@mbernier, проблема возникает снова.
Привет @ r3wt!
Не могли бы вы связаться с нашей службой поддержки, используя исходный тикет поддержки, который вы открыли вместе с ними, и ссылку на эту ветку? Я думаю, что что-то случилось с вашей учетной записью, и у них есть инструменты для расследования вашей учетной записи.
Спасибо!
С наилучшими пожеланиями,
Элмер
Просто сообщаю вам, что у меня были очень похожие проблемы, насколько я могу судить (все еще новые). Решение заключалось в настройке ключевой переменной API на платформе приложений heroku https://devcenter.heroku.com/articles/sendgrid#setup -api-key-environment-variable
Теперь у меня нет проблем.