- Регистрация
- 14.02.2017
- Сообщения
- 639
- Благодарностей
- 581
- Баллы
- 93
Господа, прошу помощи!
Суть: необходимо брать из файла email-адреса. Кол-во строк, которые необходимо взять обозначены переменной.
В случае, если кол-во строк, которые нужно взять, превышают оставшиеся email в файле, то взять все, что сталось.
Если в переменной задано, что нужно взять только 1 email, то идет обертывание этой строки в: "[email protected]":""
Если в переменной задано, что нужно взять несколько email, то идет обертывание через запятую: "[email protected]":"","[email protected]":""
Если список пустой, то выходим по красной.
Сам код:
В чем собственно затык:
если кол-во email, которые необходимо взять [how_to_count] больше, чем их всего осталось в списке, то строки берутся с лишней запятой на конце, пример:
Во всех остальных случаях - все работает, как положено, без добавления запятой после последнего взятого email-адреса:
P.S можно попробовать сделать обрез запятой, что то из разряда
но, как тогда узнать, что на конце именно запятая, а не двойные кавычки....
Суть: необходимо брать из файла email-адреса. Кол-во строк, которые необходимо взять обозначены переменной.
В случае, если кол-во строк, которые нужно взять, превышают оставшиеся email в файле, то взять все, что сталось.
Если в переменной задано, что нужно взять только 1 email, то идет обертывание этой строки в: "[email protected]":""
Если в переменной задано, что нужно взять несколько email, то идет обертывание через запятую: "[email protected]":"","[email protected]":""
Если список пустой, то выходим по красной.
Сам код:
C#:
string fileName = project.Variables["base_path"].Value;
try {
lock(CommonCode.email_base)
{
var list = project.Lists["email_base"];// Исходный список
StringBuilder strb = new StringBuilder();
if (project.Variables["how_to_count"].Value =="") {
project.Variables["how_to_count"].Value = "0";}
if (project.Variables["how_to_count"].Value !="") {
int j = int.Parse(project.Variables["how_to_count"].Value); //Переменная, в которой задается кол-во email, которые необходимо взять
for (int i = 0; i < j; i++) {
int r = 0;
if (i + 1 == j){
strb.Append("\"" + list[r]+ "\":\"\"");}
else {
strb.Append("\"" +list[r] + "\":\"\",");}
list.RemoveAt(r);
if (list.Count <= j) {
var dob = strb.ToString();
project.Variables["to"].Value = dob;}
if (list.Count == 0) {
return strb.ToString();
project.Variables["to"].Value = strb.ToString();}
}}
project.Variables["to"].Value = strb.ToString();
}
}
catch {
ZennoPoster.StopTask(Guid.Parse(project.TaskId));
throw new Exception("[==Gmail.com==] - " + "Закончились получатели, рассылка с данного почтовика будет остановлена! Пополните файл " + fileName);}
В чем собственно затык:
если кол-во email, которые необходимо взять [how_to_count] больше, чем их всего осталось в списке, то строки берутся с лишней запятой на конце, пример:
Во всех остальных случаях - все работает, как положено, без добавления запятой после последнего взятого email-адреса:
P.S можно попробовать сделать обрез запятой, что то из разряда
C#:
if (list.Count <= j) {
var obrez = strb.ToString();
obrez = obrez.Substring(0,(obrez.Length-1));
project.Variables["to"].Value = obrez;}