Сообщение «В соединении отказано» почти всегда разрешает одну из этих двух возможностей:
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
, но я не мог понять язык, если вы дадите мне тестовые учетные данные, я попробую сам.