cdax Ответов: 1

Извлечение данных outllook для добавления в mysql


Я застрял с получением данных электронной почты из этого кода
Моя таблица mysql выглядит следующим образом:
TicketID	varchar(15)	True
Caller	        char(30)	True
Priority	varchar(15)	True
Business_service	char(15)	True
Short_description	varchar(30)	True

Моя электронная почта выглядит так:
Цитата:
Предупреждение SLA для INC33333333

Реквизиты Билета :
Краткое описание: ship-to 8766545 не может быть найден в 27.20.2.2 customer ship-to modify
Звонящий: Октавиан
Приоритет: 3 - Умеренный
Бизнес-сервис: TCSIT

emailbody у него есть вся почта

Моя проблема: когда я запускаю это, я получаю пустую таблицу без каких-либо значений, не могли бы вы сказать мне, как извлечь эти значения(краткое описание, приоритет, вызывающий абонент и т. д. из почты) и добавить в таблицу.

Я пробовал использовать Contains и startswith, но все еще не получаю его.

Спасибо.

Что я уже пробовал:

Мой код выглядит примерно так на языке Си#
MySqlCommand com = new MySqlCommand("insert into " + tableName + " (" + colName + ") values (" + paramName + ")", connection);
MySqlDataReader read = null;

string emailBody = mail.EmailBody; // Extract Short description, Caller, Priority, Business service from the 

string Short_description = ""; // Need to get the shortDescription from emailBody
string Caller = "";
string Priority = "";
string Business_service = "";
string TicketID = "";

// Number of parameters should match with DB table except auto increment ID in DB.
com.Parameters.Clear();
com.Parameters.Add("@TicketID", MySqlDbType.VarChar).Value = TicketID;
com.Parameters.Add("@Caller", MySqlDbType.VarChar).Value = Caller;
com.Parameters.Add("@Priority", MySqlDbType.VarChar).Value = Priority;
com.Parameters.Add("@Business_service", MySqlDbType.VarChar).Value = Business_service;
com.Parameters.Add("@Short_description", MySqlDbType.VarChar).Value = Short_description;

read = com.ExecuteReader();
read.Close();

Richard Deeming

Вы не показали ни одной из своих попыток извлечь детали из тела сообщения.

Вы также используете ExecuteReader для INSERT команда, которая не возвращает никаких строк. Воспользуйся ExecuteNonQuery вместо.

1 Ответов

Рейтинг:
1

CHill60

После этого вам не хватает изрядного количества кода

string emailBody = mail.EmailBody; // Extract Short description, Caller, Priority, Business service from the 
как и при извлечении этих значений из тела письма!

Один из подходов, который, возможно, является самым простым, чтобы следовать
1. Разделите тело письма на отдельные строки - множество примеров здесь[^]

2. для каждой из строк тела письма найдите ключевые слова/фразы, которые вас интересуют - вы могли бы использовать Строка.Метод Индексации [^ для этого

3. Возьмите фактическое значение для каждого ключевого слова/фразы - вы можете использовать Строка.Метода Substring [^] для этого или вы можете разделить каждую строку с помощью символа ":"

4. Затем вы можете настроить свои параметры для вашего оператора SQL, как вы уже сделали - я надеюсь, что ваша переменная paramName правильно сконструирован, я действительно не вижу смысла использовать переменные для tableName, colName или paramName вот как вы знаете, какие параметры понадобятся.

5. Как указал @Richard-Deeming - используйте ExecuteNonQuery для запуска вставки и избавления от бессмысленного
MySqlDataReader read = null;
Вы, вероятно, столкнетесь с проблемами с возвращаемыми значениями - самая распространенная ошибка с новичками заключается в том, что они не учитывают положение фактического символа ":" при использовании IndexOf, например. Используйте отладчик, чтобы помочь себе понять, как изменить код - см. статью CP Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Дайте ему попробовать и напишите код, а затем, если вы все еще застряли, вернитесь с этим кодом, и мы постараемся помочь вам дальше. Но мы не будем писать его для вас