Ошибка ретрансляции обычно означает, что ваш клиент пытается отправить электронное письмо получателю, который находится за пределами системы, к которой вы подключены, но ваш клиент не авторизован для этого.Глядя на свой код, вы вообще не пытаетесь аутентифицировать себя на сервере.
Во-первых, вы используете команду HELO, и при этом вы используете ее неправильно.Входным параметром для HELO является ИМЯ МАШИНЫ , но вместо этого вы отправляете SMTP SERVER HOSTNAME .Вам нужно это исправить.
После этого вы должны использовать команду EHLO вместо команды HELO.EHLO позволит вашему клиенту определить, какие схемы аутентификации (среди прочих функций) сервер фактически поддерживает (например, LOGIN, NTLM, SHA1, MD5 и т. Д.).Затем вы можете выбрать тот, который поддерживаете, и использовать его для входа в реальную учетную запись пользователя, у которого есть права на ретрансляцию.
Другая проблема с вашим кодом заключается в том, что он вообще не обрабатывает ошибки на уровне SMTP.Вы просматриваете коды ошибок сокетов, но вообще не ищите коды ошибок SMTP.Например, если сервер отклоняет команду MAIL FROM или RCPT TO (что и происходит в этой ситуации), ваш код все равно будет тратить пропускную способность и время обработки, отправляя команду DATA, которая не будет выполнена (с другой ошибкой SMTP, которую вы не ищете).для).