Проблема доступа к SMTP в C # - PullRequest
1 голос
/ 06 июля 2010

Я работаю с C #, используя библиотеки

using System.Net.Mail;
using System.Windows;

Я хочу использовать код во многих местах, т.е. место A, место B, место C ...

когда я использую его в месте A, он работает, и письма отправляются из моего приложения.

но когда я использую его в месте B, месте C ... ничего не отправляется, и я получаю ошибки, я хочу знать, как решить эту проблему.

это мой класс:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;

using System.Net.Mail;
using System.Windows;

namespace Send_Mail_WPF_
{
    class SendMail
    {
        private string fromAddress;
        private string fromPassword;
        private string toAddress;
        private string msgSubject;
        private string msgBody;
        private string exchangeServer;
        private int exchangeServerPort;
        private bool error;

        private MailMessage message;
        SmtpClient client;

        public SendMail(string fromMail, string toMail, string fromPass, string subject, string body)
        {
            error = false;
            try
            {
                fromAddress = fromMail.ToString();
                toAddress = toMail.ToString();
                fromPassword = fromPass.ToString();
                msgSubject = subject.ToString();
                msgBody = body.ToString();
                exchangeServer = @"smtp.tedata.net";
                exchangeServerPort = 25;
                initializeMessage();
                setSMTPClient();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
                errorFound = true;
            }
        }

        public bool errorFound
        {
            set
            {
                error = value;
            }
            get
            {
                return error;
            }
        }

        private void initializeMessage()
        {
            message = new MailMessage(fromAddress, toAddress);
            message.Subject = msgSubject;
            message.Body = msgBody;
            message.IsBodyHtml = false;
        }

        private void setSMTPClient()
        {
            try
            {
                client = new SmtpClient(exchangeServer, exchangeServerPort);
                client.EnableSsl = false;
                client.Credentials = new NetworkCredential(fromAddress, fromPassword);
                MessageBox.Show("From" + message.From.ToString());
                message.From = new MailAddress("aaaaaaaa@aaaaaaaaaaaaa.com");
                MessageBox.Show("From" + message.From.ToString());
                Application.Current.Shutdown();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
                errorFound = true;
            }
        }

        public void sendMessage()
        {
            try
            {
                client.Send(message);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
                errorFound = true;
            }
        }
    }
}

Я думаю, что проблема в сервере обмена, но я не знаю, как это преодолеть.

EDIT:

ОШИБКА Я получаю из любого места, а не из места A

альтернативный текст http://img651.imageshack.us/img651/6343/errorh.jpg

Ответы [ 3 ]

0 голосов
/ 06 июля 2010

Ваш код в порядке.Вероятно, это проблема аутентификации.Обратитесь к администратору сети.

0 голосов
/ 06 июля 2010

Разные места означают разные IP-адреса.

иногда служба SMTP настроена на работу только в ограниченном пуле IP-адресов.

В вашем случае вполне вероятно, что ваша служба SMTP будет работать только на местеIP-адрес A, но не на месте B, а на месте C

0 голосов
/ 06 июля 2010

Под разными местами, я так понимаю, вы имеете в виду разные машины.Вероятно, проблема связана с DNS или какой-либо другой проблемой, внешней по отношению к вашему коду.Хороший способ проверить SMTP-соединение - это подключиться к порту smtp.tedata.net через порт 25. Я предполагаю, что это не сработает, что объясняет, почему ваш код не работает.После того, как вы решили проблему с сетью, повторите ваш код.

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