Здравствуйте, ChabaninDmitry, Вы писали:
CD>Может есть способ бороться с его глюками?
Если ты про Web.Mail, то не надо с ним бороться, просто выбрось это глюкалово и поищи в инете нормальные smtp-отправщики. Ты сэкономишь больше времени, чем борясь с его таинственными COM-ошибками.
Re[2]: SmtpMail - как его побороть?
От:
Аноним
Дата:
25.01.05 08:37
Оценка:
A>Если ты про Web.Mail, то не надо с ним бороться, просто выбрось это глюкалово и поищи в инете нормальные smtp-отправщики. Ты сэкономишь больше времени, чем борясь с его таинственными COM-ошибками.
Здравствуйте, Аноним, Вы писали:
А>А у меня он отлично работал
Тебе повезло. У нас он страшно криво работал. Вплоть до того, что некоторые аттачи слал, а некоторые — нет. Вот такой он таинственный... Причем ошибки плавающие, т.е. хрен отладишь. В общем, полный отказ от него избавил от большого числа мистики.
Здравствуйте, Andrbig, Вы писали:
A>Тебе повезло. У нас он страшно криво работал. Вплоть до того, что некоторые аттачи слал, а некоторые — нет. Вот такой он таинственный... Причем ошибки плавающие, т.е. хрен отладишь. В общем, полный отказ от него избавил от большого числа мистики.
Здравствуйте, ChabaninDmitry, Вы писали:
CD>А чем заменили, если не секрет.
Это не секрет, но я не знаю. Видя, как другой программер бегает и рвет на себе волосы, я предложил ему поискать в инете замену. Он там ее нашел. Собственно с его слов я все и говорю. Слава богу, сам не сталкивался.
А потом я сменил работу.
Впрочем, если тебе совсем будет туго и ты не сможешь ничего найти подходящего, я могу попробовать выйти на него и спросить.
А>... я предложил ему поискать в инете замену. ...
A>...А потом я сменил работу.
я тоже когда-то боролся с SMTP, потом даже написал враппер под MAPI, вполне неплохо работало, а потом я узнал как использовать Web.Mail через Exchange и с тех пор пользуюсь только им. Для моих скромных задач вполне хватает.
Одинаковые ошибки не обязательно делать каждый раз, достаточно сделать одну, а затем обращаться к ней по мере необходимости из любого места программы.
SM>я тоже когда-то боролся с SMTP, потом даже написал враппер под MAPI, вполне неплохо работало, а потом я узнал как использовать Web.Mail через Exchange и с тех пор пользуюсь только им. Для моих скромных задач вполне хватает.
Здравствуйте, 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 вам в руки...
Одинаковые ошибки не обязательно делать каждый раз, достаточно сделать одну, а затем обращаться к ней по мере необходимости из любого места программы.