Критическая ошибка в BADEND :D

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113
Забавно, но волею судьбы, то ли других обстоятельств, в ветке badend произошла критическая ошибка:
Выполнение действия CSharp OwnCode Object reference not set to an instance of an object.

Это C# экшен отправки письма.
Код:
// с какого email отправлять
var fromEmailString = project.Variables["fromEmail"].Value;
// куда отправлять
var toEmailString = project.Variables["toEmailClient"].Value;
// логин для авторизации на сервере отправки письма
var login = project.Variables["MAIL_login"].Value;
// пароль от email, от имени которого отправляем письмо
var password = project.Variables["MAIL_password"].Value;
// сервер, через который отправляем письмо
var server = project.Variables["MAIL_server"].Value;
// порт сервера, через который отправляем письмо
int port;
int.TryParse(project.Variables["MAIL_port"].Value, out port);
// нужно ли шифровать подключение (например для gmail нужно)
bool encryptConnection;
bool.TryParse(project.Variables["encryptedConnection"].Value, out encryptConnection);
// текст письма
var messageText = project.Variables["messageBody"].Value;
// заголовок письма
var messageSubject = project.Variables["messageSubject"].Value;
// файл, который нужно приложить, если ничего не нужно прикладывать, оставляем переменную пустой
var fileToAttach = project.Variables["fileToAttach"].Value;

// Формирование реквизитов письма
var fromAddress = new System.Net.Mail.MailAddress(fromEmailString, fromEmailString);
var toAddress = new System.Net.Mail.MailAddress(toEmailString, toEmailString);
// создаем подключение к почтовому серверу
var smtp = new System.Net.Mail.SmtpClient {
                            Host = server,
                            Port = port,
                            EnableSsl = encryptConnection,
                            DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
                            UseDefaultCredentials = false,
                            Credentials = new System.Net.NetworkCredential(login, password)
                        };
// создаем письмо
var message = new System.Net.Mail.MailMessage(fromAddress, toAddress) {
                                        Subject = messageSubject,
                                        Body = messageText,
                                        IsBodyHtml = false,
                                    };
// если у нас есть вложение, то добавляем его
if (!string.IsNullOrEmpty(fileToAttach))
{
    var attach = new System.Net.Mail.Attachment(fileToAttach);
    message.Attachments.Add(attach);
}
string result;
try
   {
   //Отсылаем сообщение
    smtp.Send(message);
    message.Dispose();
    result = "Письмо отправлено";
   }
   catch (Exception e)
   {
     result = e.InnerException.Message.ToString();
   }
return result;
И вообще, я заметил, что письма по badend отправляются в 10% случаев, почему так? И что, собственно, значит эта ошибка и почему она не ушла в исключение (catch)?

P.S. Вне BADEND'a письма отправляются корректно.
 
Последнее редактирование:

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 451
Благодарностей
1 885
Баллы
113
У Вас в коде что то прописано неверно. Либо переменные отсутствуют, либо файл отсутствует. Что то такое..
Почему не сработал catch? - Потому что исключение вызвано вне цикла трай.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
да в гугле есть отправка с 10-ти строк и всё работает на ура, главное хотение добиться результата
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113
У Вас в коде что то прописано неверно. Либо переменные отсутствуют, либо файл отсутствует. Что то такое..
Почему не сработал catch? - Потому что исключение вызвано вне цикла трай.
Этот код в проекте есть не только в BADEND'e и он стабильно отрабатывает несколько раз в сутки. Но вот сегодня все потоки успешно остучались на почту, А один завалился в одном месте и письмо об этом не выслал. Все переменные указаны в шаблон по умолчанию, кроме заголовка и темы письма, но идут кубиками установки переменных сразу перед C# экшеном. Проверка наличия \ отсутствия файла есть в коде. Поэтому я и хочу разобраться, что это за ошибка. Или ошибка явно указывает на то, что какие-то данные, которые должны были быть в переменных отсутствуют?

да в гугле есть отправка с 10-ти строк и всё работает на ура, главное хотение добиться результата
Так и этот код работает, он впервые за долгое время сбился. Хочу понять причину.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)