Не могу отправлять письма с помощью NEM (модуль SmtpClient) - PullRequest
1 голос
/ 25 мая 2020
• 1000
error: Uncaught ConnectionRefused: No connection could be made because the target machine actively refused it. (os error 10061)
    at unwrapResponse ($deno$/ops/dispatch_json.ts:43:11)
    at Object.sendAsync ($deno$/ops/dispatch_json.ts:98:10)
    at async Object.connectTls ($deno$/tls.ts:20:15)
    at async SmtpClient.connectTLS (https://deno.land/x/smtp/smtp.ts:36:18)
    at async file:///C:/.../controller.js:28:1

1 Ответ

0 голосов
/ 26 мая 2020

Сообщение «В соединении отказано» почти всегда разрешает одну из этих двух возможностей:

1. Сервер или служба нестабильны или недоступны.

В этой ситуации на сервере может происходить несколько вещей:

Параметры 1.1 - Неверный порт / прослушиватель не работает

Порт, который вы используете, правильный, но слушатель (процесс на серверах) не работает, что означает, что вы подключаетесь к правильному порту, но нет процесса для прослушивания ваших запросов.

Возможное решение - попробовать запустить telnet <address> <port> и проверить, работает ли служба. Пример: telnet google.com 443.

Вариант 1.2 - Пороговое ограничение

Порт и служба активны, но вы достигли порога, ограничивающего настроенное TCP-соединение. .

Это могло произойти из-за высокого c трафика (пиков) к конечной точке. Это не то, что вы можете решить сами. Прослушиватели TCP могут отклонить соединение вызывающего абонента, если c трафик слишком велик.

Один из способов их тестирования - реализовать сценарий нагрузочного тестирования, который проверяет подключение с течением времени. Если вы докажете, что сервер ограничивает количество запросов, вы можете сообщить об этом и попросить их увеличить нагрузочную способность (разрешить более высокую пропускную способность для одновременных запросов).

2. Клиент не может связаться с сервером

Вариант 2.1 - Прокси

Если вы подключаетесь из корпоративной сети и между ними есть прокси-сервер, возможно, именно поэтому вы возникают такие трудности.

Решение: запустите свой код из дома или во внешней сети, чтобы доказать, что вы можете подключиться извне корпоративной сети.

Вариант 2.2 - Брандмауэр

Как и прокси, вы запускаете свой код за брандмауэром, который либо блокирует, либо мешает вашему общению с внешней сетью.


Мне удалось запустить ваш код и подключитесь к Google, используя мои личные данные. Мне пришлось внести небольшое изменение из-за проблемы с библиотекой Deno из-за определений типов, но она работала нормально.

Я сильно подозреваю, что ваша проблема связана с инфраструктурой (локальной или удаленной), а не с Deno runtime или библиотеку.

import { SmtpClient } from "https://deno.land/x/smtp/mod.ts";
import { ConnectConfigWithAuthentication } from "https://raw.githubusercontent.com/manyuanrong/deno-smtp/master/config.ts";

const client = new SmtpClient();

const params = <ConnectConfigWithAuthentication>{
  hostname: "smtp.google.com",
  port: 465,
  username: "<google mail>",
  password: "<password>"
}

await client.connectTLS(params);

await client.send({
  from: "<from_email>", // Your Email address
  to: "<to_email>", // Email address of the destination
  subject: "Mail Title",
  content: "Mail Content,maybe HTML",
});

await client.close();

Я пытался создать пользователя на веб-сайте smtp.163.com, но я не мог понять язык, если вы дадите мне тестовые учетные данные, я попробую сам.

...