Можно ли написать код C #, как показано ниже, и отправить электронное письмо по сети в другой стране? - PullRequest
0 голосов
/ 01 мая 2010

Можно ли написать код C #, как показано ниже, и отправлять электронную почту с помощью mnetwork в другой стране?

MSExchangeWebServiceURL = mail.something.com/ews/exchange.asmx

Это URL веб-службы. Это прекрасно работает, когда я запускаю один и тот же код из домашней сети, домашней сети моих друзей где угодно, но когда я запускаю его из местоположения моего клиента в Колумбии, он не работает.

У меня есть действительное имя пользователя и пароль на этом сервере Exchange. Есть ли какая-либо конфигурация, которую я могу установить для достижения этой цели?

Кстати, этот код ниже работает, когда я запускаю его в офисной сети и любой сети в любой домашней сети. Я попробовал это по крайней мере с пятью друзьями в сети в Плано, штат Техас. Я хочу, чтобы этот код работал из любой сети в другой стране.

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

Ответы [ 3 ]

1 голос
/ 01 мая 2010

РЕДАКТИРОВАТЬ: основываясь на комментариях и обновленном посте, я бы поспорил, что в расположении клиента есть прокси-сервер или брандмауэр, который блокирует трафик. Клиенту, вероятно, нужно добавить соответствующий домен во что угодно " Белый список "у них есть.

Если это работает из внутренней сети, то проблема, скорее всего, не в коде. Вам нужно отладить его и посмотреть, какая ошибка возникает при запуске вне сети. Затем проверьте журналы на брандмауэре и целевом сервере обмена, чтобы увидеть, что происходит.

Одним из возможных виновников является то, что DNS-имя не настроено за пределами офисной сети или что офисный брандмауэр не настроен для передачи трафика (или только для передачи SMTP-трафика) из Интернета на рассматриваемый сервер. Другая причина заключается в том, что веб-службы Exchange неправильно настроены для приема запросов от внешнего мира. Это можно проверить из http://www.testexchangeconnectivity.com/.

Если вам этого недостаточно, опубликуйте больше информации о том, какие ошибки вы видите. «Это не работает, я хочу, чтобы это работало», напоминает мне эпизод «Звездный путь» TNG о видах, которые постоянно говорили Георди «заставить его работать».

0 голосов
/ 01 мая 2010

Вам нужно немного разбить это:

Что такое MSExchangeWebServiceURL? Мне не нужно знать ваш реальный URL, но можно ли это разрешить из вашей домашней сети? это внутренний DNS-сервер (server.mycompany.local) или DNS-хост с возможностью внешнего разрешения (mail.yourcompany.com)?

Если он внутренний, как сказал другой автор, вам по крайней мере потребуется VPN (или замените его на внешний URL).

Я не большой парень на C #, но, полагаю, он ищет ваше имя хоста или полное доменное имя Exchange Server, и, так как тип "SMTP", он хочет установить TCP-сессию с вашим почтовым сервером. Вероятно, вы можете проверить это, открыв командную строку и попытавшись набрать telnet <MSExchangeWebServiceURL> 25. Когда это сработает, я думаю, ваш код тоже будет работать.

0 голосов
/ 01 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...