SmtpMail - как его побороть?
От: ChabaninDmitry  
Дата: 25.01.05 07:16
Оценка:
Может есть способ бороться с его глюками?
Re: SmtpMail - как его побороть?
От: Аноним  
Дата: 25.01.05 07:27
Оценка:
CD>Может есть способ бороться с его глюками?

есть — нужно всего лишь почитать инструкцию
Re[2]: SmtpMail - как его побороть?
От: ChabaninDmitry  
Дата: 25.01.05 07:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>есть — нужно всего лишь почитать инструкцию

А нетыкнители поверхностью лица в инструкцию?
Re: SmtpMail - как его побороть?
От: csharper  
Дата: 25.01.05 08:01
Оценка:
Здравствуйте, ChabaninDmitry, Вы писали:

CD>Может есть способ бороться с его глюками?


А что глючит?
Re: SmtpMail - как его побороть?
От: Andrbig  
Дата: 25.01.05 08:06
Оценка:
Здравствуйте, ChabaninDmitry, Вы писали:

CD>Может есть способ бороться с его глюками?


Если ты про Web.Mail, то не надо с ним бороться, просто выбрось это глюкалово и поищи в инете нормальные smtp-отправщики. Ты сэкономишь больше времени, чем борясь с его таинственными COM-ошибками.
Re[2]: SmtpMail - как его побороть?
От: Аноним  
Дата: 25.01.05 08:37
Оценка:
A>Если ты про Web.Mail, то не надо с ним бороться, просто выбрось это глюкалово и поищи в инете нормальные smtp-отправщики. Ты сэкономишь больше времени, чем борясь с его таинственными COM-ошибками.

А у меня он отлично работал
Re[2]: SmtpMail - как его побороть?
От: ChabaninDmitry  
Дата: 25.01.05 08:38
Оценка:
Здравствуйте, csharper, Вы писали:

C>А что глючит?


Организовал чтото вроде очереди собщений, подготовленных к отправке.



SmtpMail.SmtpServer = "MyMailServer";
ArrayList queueMessages;//сдесь сообщения и все корректно заполнены
.
.
.
.
IEnumerator enumerator = queueMessages.GetEnumerator();
while(enumerator.MoveNext())
{
try
{
SmtpMail.Send((MailMessage)enumerator.Current);//посылаем
queueMessages.Remove((MailMessage)enumerator.Current);//если все хорошо, то удаляем
enumerator.Reset();//и переходим к следующему
}
catch
{
//иначе опять пытаемся его отослать
}
}
.
.
.

Короче из десяти сообщений, которые надо отослать, исключение кидается раз 6. Грустно.
Re[2]: SmtpMail - как его побороть?
От: ChabaninDmitry  
Дата: 25.01.05 08:39
Оценка:
Здравствуйте, Andrbig, Вы писали:

Да, наверное наилучший вариант.
Re[3]: SmtpMail - как его побороть?
От: Andrbig  
Дата: 25.01.05 09:25
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А у меня он отлично работал


Тебе повезло. У нас он страшно криво работал. Вплоть до того, что некоторые аттачи слал, а некоторые — нет. Вот такой он таинственный... Причем ошибки плавающие, т.е. хрен отладишь. В общем, полный отказ от него избавил от большого числа мистики.
Re[4]: SmtpMail - как его побороть?
От: ChabaninDmitry  
Дата: 25.01.05 09:35
Оценка:
Здравствуйте, Andrbig, Вы писали:

A>Тебе повезло. У нас он страшно криво работал. Вплоть до того, что некоторые аттачи слал, а некоторые — нет. Вот такой он таинственный... Причем ошибки плавающие, т.е. хрен отладишь. В общем, полный отказ от него избавил от большого числа мистики.


А чем заменили, если не секрет.
Re[5]: SmtpMail - как его побороть?
От: valmond Россия http://blogs.technet.com/valmond/
Дата: 25.01.05 09:51
Оценка:
CD>А чем заменили, если не секрет.

Можно посмотреть в сторону FreeSMTP.Net (здесь)
Заметки — SharePoint & InfoPath
http://blogs.technet.com/valmond/
Re[5]: SmtpMail - как его побороть?
От: Andrbig  
Дата: 25.01.05 11:54
Оценка:
Здравствуйте, ChabaninDmitry, Вы писали:

CD>А чем заменили, если не секрет.


Это не секрет, но я не знаю. Видя, как другой программер бегает и рвет на себе волосы, я предложил ему поискать в инете замену. Он там ее нашел. Собственно с его слов я все и говорю. Слава богу, сам не сталкивался.

А потом я сменил работу.

Впрочем, если тебе совсем будет туго и ты не сможешь ничего найти подходящего, я могу попробовать выйти на него и спросить.
Re[6]: SmtpMail - как его побороть?
От: Shulapov Max Россия  
Дата: 25.01.05 12:15
Оценка:
Здравствуйте, Andrbig, Вы писали:

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




я тоже когда-то боролся с SMTP, потом даже написал враппер под MAPI, вполне неплохо работало, а потом я узнал как использовать Web.Mail через Exchange и с тех пор пользуюсь только им. Для моих скромных задач вполне хватает.
Одинаковые ошибки не обязательно делать каждый раз, достаточно сделать одну, а затем обращаться к ней по мере необходимости из любого места программы.
Re[7]: SmtpMail - как его побороть?
От: ChabaninDmitry  
Дата: 25.01.05 13:17
Оценка:
Здравствуйте, Shulapov Max, Вы писали:


SM>я тоже когда-то боролся с SMTP, потом даже написал враппер под MAPI, вполне неплохо работало, а потом я узнал как использовать Web.Mail через Exchange и с тех пор пользуюсь только им. Для моих скромных задач вполне хватает.


Дык раскажи народу КАК.
Re[3]: SmtpMail - как его побороть?
От: Сим Россия  
Дата: 25.01.05 13:20
Оценка:
CD>Короче из десяти сообщений, которые надо отослать, исключение кидается раз 6. Грустно.

Какое именно?
Re[8]: SmtpMail - как его побороть?
От: Shulapov Max Россия  
Дата: 25.01.05 13:35
Оценка:
Здравствуйте, ChabaninDmitry, Вы писали:

CD>Здравствуйте, Shulapov Max, Вы писали:



SM>>я тоже когда-то боролся с SMTP, потом даже написал враппер под MAPI, вполне неплохо работало, а потом я узнал как использовать Web.Mail через Exchange и с тех пор пользуюсь только им. Для моих скромных задач вполне хватает.


CD>Дык раскажи народу КАК.


пожалуйста, вот кусок кода...


IDictionary Send(IDictionary parameters)
    {
        IDictionary result = new Hashtable();
        try
        {
            //TODO: attach, utf8, headers
            MailMessage mm = new MailMessage();

            //настройка свойств
            if (parameters.Contains("BCC"))
                mm.Bcc = (string)parameters["BCC"];
            if (parameters.Contains("Body"))
                mm.Body = (string)parameters["Body"];
            if (parameters.Contains("Encoding"))
                mm.BodyEncoding = (System.Text.Encoding)Enum.Parse(typeof(System.Text.Encoding), (string)parameters["Encoding"], true);
            if (parameters.Contains("Format"))
                mm.BodyFormat = (MailFormat)Enum.Parse(typeof(MailFormat), (string)parameters["Format"], true);
            if (parameters.Contains("CC"))
                mm.Cc = (string)parameters["CC"];
            if (parameters.Contains("FROM"))
                mm.From = (string)parameters["FROM"];
            if (parameters.Contains("Priority"))
                mm.Priority = (MailPriority)Enum.Parse(typeof(MailPriority), (string)parameters["Priority"], true);
            if (parameters.Contains("Subject"))
                mm.Subject = (string)parameters["Subject"];
            if (parameters.Contains("TO"))
                mm.To = (string)parameters["TO"];
            if (parameters.Contains("UrlContentBase"))
                mm.UrlContentBase = (string)parameters["UrlContentBase"];
            if (parameters.Contains("UrlContentLocation"))
                mm.UrlContentLocation = (string)parameters["UrlContentLocation"];

            //add fields
            IDictionaryEnumerator enumer = parameters.GetEnumerator();
            while (enumer.MoveNext())
            {
                if (enumer.Key.ToString().StartsWith("Field:"))
                {
                    string _field = enumer.Key.ToString().Substring(5);
                    mm.Fields.Add(_field, enumer.Value);
                }
            }

            //настройка smtp 
            if (m_useExchange)
            {
                SmtpMail.SmtpServer = m_exchange;
                mm.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", m_exchange); 
                mm.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 2); //NTLM
            }
            else
            {
                SmtpMail.SmtpServer = m_server;
                mm.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", m_server); 
                mm.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 0); //None
            }

            mm.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", m_port); 
            mm.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", 2); 
            //cdoSendUsingPort: Send the message using the network (SMTP over the network).  
            //If you specify the value cdoSendUsingPort, you need to set the values for the following fields:
            //http://schemas.microsoft.com/cdo/configuration/smtpserverport Field
            //http://schemas.microsoft.com/cdo/configuration/smtpserver Field

            
            SmtpMail.Send(mm);
        }
        catch(Exception ex)
        {
            ErrorTracer.Trace(ex.Message);
            if (ex.InnerException != null)
            {
                ErrorTracer.Trace(ex.InnerException.Message);
                if (ex.InnerException.InnerException != null)
                {
                    ErrorTracer.Trace(ex.InnerException.InnerException.Message);
                    if (ex.InnerException.InnerException.InnerException != null)
                        ErrorTracer.Trace(ex.InnerException.InnerException.InnerException.Message);
                }
            }
    
            result.Add("Successed", false);
            return result;
        }

        result.Add("Successed", true);
        return result;
    }



фишка в "mm.Fields.Add"
в общем MSDN вам в руки...
Одинаковые ошибки не обязательно делать каждый раз, достаточно сделать одну, а затем обращаться к ней по мере необходимости из любого места программы.
Re[4]: SmtpMail - как его побороть?
От: ChabaninDmitry  
Дата: 25.01.05 13:37
Оценка:
Здравствуйте, Сим, Вы писали:

Сим>Какое именно?


Could not access 'CDO.Message' object
Re[9]: SmtpMail - как его побороть?
От: ChabaninDmitry  
Дата: 25.01.05 13:56
Оценка:
Здравствуйте, Shulapov Max, Вы писали:


SM>пожалуйста, вот кусок кода...



Да просто и элегантно. вот еслибы еще ссылку на статейку в MSDN былобы вобще
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.