Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2013, 22:59   #1
archi-boy
 
Регистрация: 12.02.2012
Сообщений: 6
По умолчанию Ошибка: Индекс находился вне границ массива

Есть код:
Код:
string msg = richTextBox1.Text.ToString();
                                    AlternateView html_view = AlternateView.CreateAlternateViewFromString(msg, null, "text/html");
                                    string poisk_img = "<img";
                                    int amount = new Regex(poisk_img).Matches(msg).Count;
                                    int findindex=0;
                                    string name_img ="";
                                    int findindex_nameimg = 0;
                                    for (int i = 0; i < amount; i++, findindex++)
                                    {
                                        AlternateView[][] jpeg_view_mas = new AlternateView[i][];
                                        findindex = msg.IndexOf(@"src=""images/",findindex);
                                        name_img = msg.Substring(findindex + 11, 50);
                                        findindex_nameimg = name_img.IndexOf(".");
                                        name_img = name_img.Substring(1, findindex_nameimg + 4);
                                        name_img = name_img.Replace(@"""", "");
                                        name_img = name_img.Replace(" ", "");
                                        jpeg_view_mas[i][0].ContentType.Name = "images/" + name_img;
                                        jpeg_view_mas[i][1].ContentType.MediaType = MediaTypeNames.Image.Jpeg;
                                        jpeg_view_mas[i][2].ContentId = "uniqueId";
                                        jpeg_view_mas[i][3].TransferEncoding = TransferEncoding.Base64;                                        
                                        Message.AlternateViews.Add(jpeg_view_mas[i][0]);
                                       
                                    }
выдает ошибку:
Индекс находился вне границ массива
Проверил в дебаггере, все норм индекс = 0, не пойму помогите плиз!



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 14.11.2013 в 23:15.
archi-boy вне форума Ответить с цитированием
Старый 14.11.2013, 23:17   #2
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

У вас индекс меняется в цикле, вы на каждом шаге проверяли?
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 14.11.2013, 23:28   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
new AlternateView[i]
На первой итерации у тебя получается что?
new AlternateView[0]
Смекаешь к чему я склоняю?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.11.2013, 23:41   #4
archi-boy
 
Регистрация: 12.02.2012
Сообщений: 6
По умолчанию

Код:
             
 string msg = richTextBox1.Text.ToString();
                                    AlternateView html_view = AlternateView.CreateAlternateViewFromString(msg, null, "text/html");
                                    string poisk_img = "<img";
                                    int amount = new Regex(poisk_img).Matches(msg).Count;
                                    int findindex=0;
                                    string name_img ="";
                                    int findindex_nameimg = 0;
                                    AlternateView[] Alt = new AlternateView[amount];
                                    for (int i = 0; i < amount; i++, findindex++)
                                    {

                                        findindex = msg.IndexOf(@"src=""images/",findindex);
                                        name_img = msg.Substring(findindex + 11, 50);
                                        findindex_nameimg = name_img.IndexOf(".");
                                        name_img = name_img.Substring(1, findindex_nameimg + 4);
                                        name_img = name_img.Replace(@"""", "");
                                        name_img = name_img.Replace(" ", "");
                                        Alt[i] = new AlternateView("images/" + name_img, MediaTypeNames.Image.Jpeg);
                                        Alt[i].ContentId = "uniqueId";
                                    
                                        Alt[i].TransferEncoding = TransferEncoding.Base64;
                                        Message.AlternateViews.Add(Alt[i]);
                                       
                                    }
ВСЕ ВРОДЕ ИСПРАВИЛ ТЕПЕРЬ ДРУГАЯ ПРОБЛЕМА:
ПОСЛЕ ОТПРАВКИ ПИСЬМА СЕБЕ НА ПОЧТУ
КАРТИНКИ НЕ ОТОБРАЖАЮТСЯ

Последний раз редактировалось Stilet; 14.11.2013 в 23:54.
archi-boy вне форума Ответить с цитированием
Старый 14.11.2013, 23:58   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Когда у меня такое произошло (я изучал сокеты Беркли и работу SMTP) я в Thunderbird открыл исходны код письма и проанализировал его multipart , всмысле как именно было "скомпилировано" письмо, и все ли стандарты были соблюдены.
Тебе видимо тоже рекомендую так сделать.
И кстати - картинки хоть вложениями прикрепились?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2013, 00:09   #6
archi-boy
 
Регистрация: 12.02.2012
Сообщений: 6
По умолчанию

нет картинки не прикрепились
archi-boy вне форума Ответить с цитированием
Старый 15.11.2013, 00:26   #7
archi-boy
 
Регистрация: 12.02.2012
Сообщений: 6
По умолчанию

а если я тебе пришлю исходник из Thunderbird сможешь сказать в чем проблема?
Плиз))))
archi-boy вне форума Ответить с цитированием
Старый 15.11.2013, 00:35   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Даже не знаю... Приаттач сюда в тему. Вдруг я не посмотрю, другие форумчане разберутся.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2013, 00:37   #9
archi-boy
 
Регистрация: 12.02.2012
Сообщений: 6
По умолчанию

Return-path: <chudilka87@gmail.com>
Authentication-Results: mxs.mail.ru; spf=pass (mx1.mail.ru: domain of gmail.com designates 209.85.217.175 as permitted sender) smtp.mailfrom=chudilka87@gmail.com smtp.helo=mail-lb0-f175.google.com;
dkim=pass header.i=gmail.com
Received-SPF: pass (mx1.mail.ru: domain of gmail.com designates 209.85.217.175 as permitted sender) client-ip=209.85.217.175; envelope-from=chudilka87@gmail.com; helo=mail-lb0-f175.google.com;
Received: from [209.85.217.175] (port=33325 helo=mail-lb0-f175.google.com)
by mx1.mail.ru with esmtp (envelope-from <chudilka87@gmail.com>)
id 1Vh3co-0006Cq-Gh
for archi-boy@list.ru; Fri, 15 Nov 2013 00:34:51 +0400
X-Mru-BL: 0:0:1122
X-Mru-PTR: off
X-Mru-NR: 1
X-Mru-OF: Linux (Google)
X-Mru-RC: US
Received: by mail-lb0-f175.google.com with SMTP id p9so2017006lbv.34
for <archi-boy@list.ru>; Thu, 14 Nov 2013 12:34:50 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20120113;
h=message-id:mime-version:from:toate:subject:conten t-type;
bh=vrEZpfZfznveDi31tMckpnGZez8FLfmR OOWfPS4jCdI=;
b=HR6RYsekJZ+KsvQ47JmVaO3urU5PNOA9/LshTxgIFEtP05suaDc74AEqsCoOvC++GC
NK5xYC6AKpswu/y226FuFFN1vNBOUISyOVvgXTGT8TIXfn/1Pbf2jTteGSIBBUHsFu71
nZkRTpT9/saT4AUKzwwDYvcgX55glyls8CVWXeOeUFly BVB+e6QhU3FtQLLsDxAYKW1P
Jfg0y2E55NvtBw7vtXfVk2Gey2DV+Pccb30 +hmyTKZnw817XAVg+khi9Q+LT6Us7snBa
P3lY9UWHknAiQh0u0k1k4x4Pymcv9/UgKG7OTla3lJm7YmaC6oazHKqQoyJ7YNXEZ uv5
YPsg==
X-Received: by 10.152.3.226 with SMTP id f2mr778683laf.62.1384461290263;
Thu, 14 Nov 2013 12:34:50 -0800 (PST)
Received: from Artur ([94.180.212.128])
by mx.google.com with ESMTPSA id mr1sm29142842lbc.16.2013.11.14.12.3 4.48
for <archi-boy@list.ru>
(version=TLSv1 cipher=ECDHE-RSA-AES128-SHA bits=128/128);
Thu, 14 Nov 2013 12:34:49 -0800 (PST)
Message-ID: <528533e9.21d2700a.40f5.ffffe062@mx .google.com>
MIME-Version: 1.0
From: chudilka87@gmail.com
To: archi-boy@list.ru
Date: Thu, 14 Nov 2013 12:34:49 -0800 (PST)
Subject: =?utf-8?B?0YLQtdC80LAg0L/QuNGB0YzQvNCw?=
Content-Type: multipart/mixed;
boundary=--boundary_19_3d77338f-ac2f-495b-80e8-3723c956bed1
X-Spam: Not detected
X-Mras: Ok
X-Mru-Authenticated-Sender: chudilka87@gmail.com


----boundary_19_3d77338f-ac2f-495b-80e8-3723c956bed1
Content-Type: multipart/alternative;
boundary=--boundary_18_831c1490-8acb-458c-8505-e99ad0ac7cf9


----boundary_18_831c1490-8acb-458c-8505-e99ad0ac7cf9
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64

и дальше идет лабуда из непонятных букв и цифр
archi-boy вне форума Ответить с цитированием
Старый 15.11.2013, 01:02   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
----boundary_19_3d77338f-ac2f-495b-80e8-3723c956bed1
Content-Type: multipart/alternative;
boundary=--boundary_18_831c1490-8acb-458c-8505-e99ad0ac7cf9
Это чего такое? Пустой аттач?
Цитата:
дальше идет лабуда из непонятных букв и цифр
Не лабуда. Файл, который ты приаттачиваешь перекодируется в Base64. Так бинарные данные передаются по почте в текстовом виде. Это общепринято.
У тебя есть где-то в письме Content-Type: images/Jpeg; ?
И кстати: new AlternateView("image/" + name_img, MediaTypeNames.Image.Jpeg); а не images.
И почему, раз ты катринки прикладываешь ты выбрал AlternateView? По идее там должен быть другой класс аттача специально для фоток (это ИМХО, я на самом деле не в курсе есть ли такой класс, но дупой чувствую - должен быть)

Короче ничего ты к письму не приложил, потому и не отображается.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Индекс находился вне границ массива. banan4ik Помощь студентам 1 30.05.2013 02:25
C++.Определите среднее значение элементов массива Х(20). Найдите индекс элемента массива, наиболее близкого к среднему значению. dunhill55 Помощь студентам 1 16.12.2012 19:02
[C#] Индекс находился вне границ массива JonMagon Помощь студентам 12 22.01.2012 23:06
"Индекс вне границ массива". Строки. (Проблема еще не решена) Broken Angel Помощь студентам 5 18.01.2011 21:33
C# ошибка:"Индекс находился вне границ массива" potap88 Помощь студентам 16 18.04.2010 15:50