Cам я в программировании не силен, нашел скрипт выполняющий похожие функции смог исправить банальные неточности и запустить его, но скрипт обладает рядом недостатков и глюков:
1) Запускается в виде окна, соответственно требует управления и взаимодействия с ним
2)Не стабильно работает, часто при верной паре логин/пароль выдает информацию о том что не удалось подключится. Подобную ошибку выдает при попытке скачать вложения после анализа почты.
3) Не создает подпапки по расширению.
Собственно сам скрипт:
// ***********************************************************
// Скрипт показывает, как сохранить электронную почту
// и все вложения (прикрепленные файлы)
// SaveMail.js
// ***********************************************************
// Глобальные переменные
var WSO, FSO, f, WshShell;
var data_array = [];
WSO = WScript.CreateObject("Scripting.WindowSystemObject");
FSO = WScript.CreateObject("Scripting.FileSystemObject");
WshShell = WScript.CreateObject("WScript.Shell");
// ******************************************************************
// параметры формы
// ******************************************************************
f = WSO.CreateForm(0,0,0,0);
f.ClientWidth = 800; // ширина
f.ClientHeight = 600; // высота
f.CenterControl(); // по центру
f.Text = "Почтовый клиент"; // название
f.SizeGrip = false; // нельзя менять размеры
f.MaximizeBox = false; // нельзя развернуть форму
// ******************************************************************
// ******************************************************************
//Текстовое поле для отображения содержимого письма
// ******************************************************************
edit2 = f.CreateEdit(0,410,800,190,WSO.Translate("ES_MULTILINE"));
edit2.ScrollBars = WSO.Translate("SS_BOTH");
edit2.ReadOnly = true;
edit2.WordWrap = true;
// ******************************************************************
// ******************************************************************
// Метки и чекбоксы
// ******************************************************************
label1 = f.TextOut(480,10,"Сервер");
LServer = f.CreateEdit(590,10,200,20,WSO.Translate("ES_MULTILINE"));
LServer.Text="pop.rambler.ru"; // содержит имя почтового сервера
label2 = f.TextOut(480,30,"Мыло");
LMail = f.CreateEdit(590,30,200,20,WSO.Translate("ES_MULTILINE"));
LMail.Text="test@rambler.ru"; // содержит имя почтового ящика как сохранить электронную почту
label3 = f.TextOut(480,50,"Пароль");
LPass = f.CreateEdit(590,50,200,20,WSO.Translate("ES_MULTILINE"));
LPass.Text="xxx"; // содержит пароль от почтового ящика
label4 = f.TextOut(480,70,"Порт");
LPort = f.CreateEdit(590,70,200,20,WSO.Translate("ES_MULTILINE"));
LPort.Text="995"; // содержит номер порта для подключения
label5 = f.TextOut(480,90,"Каталог");
LPath = f.CreateEdit(590,90,200,20,WSO.Translate("ES_MULTILINE"));
LPath.Text=WshShell.CurrentDirectory; // каталог, куда будут сохраняться письма
// если галочка поставлена - письма будут сортироваться по отдельным каталогам
CheckBox2 = f.CreateCheckBox(480,110,130,25,"В отдельную папку");
// если галочка поставлена - происходит включение шифрования SSL
CheckBox1 = f.CreateCheckBox(480,130,130,25,"SSL");
// ******************************************************************
// ******************************************************************
// Кнопки
// ******************************************************************
Button1 = f.CreateButton(480,160,150,25,"Анализировать почту")
Button1.OnClick = CreateListView; // Подключение к почтовому серверу
Button2 = f.CreateButton(480,190,150,25,"Сохранить все письма")
Button2.OnClick = SaveMailToFile; // Сохранение писем
Button3 = f.CreateButton(480,220,150,25,"Сохранить все вложения")
Button3.OnClick = SaveAllAttach; // Сохранение вложений
t = f.CreateHyperLink(490,250,250,25,"www.scriptcoding.ru")
// ******************************************************************
// ******************************************************************
// Функция создает массив с данными
// ******************************************************************
function fill_data_array(){
var objMail, success, getObjMail,eMail;
var oAttach = "";
data_array.length = 0;
// Подключаем компонент для работы с почтой
objMail= WScript.CreateObject("Chilkat_9_5_0.MailMan");
success = objMail.UnlockComponent("30-day trial");
if (success != 1){WScript.Echo("Компонент не удалось разблокировать!!!!");WScript.Quit();}
// ******************************************************************
// параметры подключения
// ******************************************************************
objMail.MailHost = LServer.Text;
objMail.PopUsername = LMail.Text;
objMail.PopPassword = LPass.Text;
objMail.MailPort = parseInt(LPort.Text);
if (CheckBox1.State==true){objMail.PopSsl=1;}else{objMail.PopSsl=0}
// ******************************************************************
getObjMail = objMail.CopyMail(); // считываем содержимое почтового ящика
if (getObjMail == null){WScript.Echo("Ошибка соединения !!!!\n\n" + objMail.LastErrorText);WScript.Quit();}
// Начинаем обработку все входящих писем как сохранить всю электронную почту
for (i=0; i<=getObjMail.MessageCount-1; i++){
eMail = getObjMail.GetEmail(i);
// добавляем в массив объект
data_array.push({
dAvtor: eMail.FromName, // автор письма
dTema: eMail.Subject, // тема письма
dMail: eMail.FromAddress, // электронный адрес отправителя
dDate: eMail.EmailDateStr, // дата
dText: eMail.GetPlainTextBody() // текстовое содержимое
});
}
//закрываем соединение
objMail.Pop3EndSession();
};
// ******************************************************************
// массив с данными о колонках
var def_columns = [
{ name: "Автор", width:120, set_data: function(item, it) { item.Text = data_array[it].dAvtor; }},
{ name: "Тема", width:120, set_data: function(item, it) { item.SubItems(0) = data_array[it].dTema; } },
{ name: "Мыло", width:120, set_data: function(item, it) { item.SubItems(1) = data_array[it].dMail; } },
{ name: "Дата", width:120, set_data: function(item, it) { item.SubItems(2) = data_array[it].dDate; } }
];
// ******************************************************************
// Функция формирует список
// ******************************************************************
function CreateListView(){
var list_view_obj;
list_view_obj = f.CreateListView( 0, 0, 460, 400,WSO.Translate("LVS_REPORT | LVS_SHOWSELALWAYS"));
list_view_obj.GridLines = true;
list_view_obj.RowSelect = true;
list_view_obj.ReadOnly = false;
// Определяем имя и тип колонок
for(var ix = 0; ix < def_columns.length; ++ix){
var def_col = def_columns[ix];
var column = list_view_obj.Columns.Add(def_col.name, def_col.width);
}
// Заполняем список
fill_data_array();
list_view_obj.Count = data_array.length;
for(var ix = 0; ix < def_columns.length; ++ix){
for (var iy=0; iy<list_view_obj.Count; iy++){
def_columns[ix].set_data(list_view_obj.item(iy), iy);
}
}
// Обработка двойного щелчка
list_view_obj.OnDblClick = function (sender, x, y, button, flags){
edit2.Text = data_array[sender.ItemIndex].dText;
}
// ******************************************************************
// Делаем доступными кнопки
// ******************************************************************
Button2.Enabled = true;
Button3.Enabled = true;
CheckBox2.Enabled = true;
// ******************************************************************
//Сообщаем об успешной операции
WScript.Echo("Подключение прошло успешно.\n В вашем ящике " + data_array.length + "писем");
};
// ******************************************************************
// ******************************************************************
// блокируем кнопки
// ******************************************************************
Button2.Enabled = false;
Button3.Enabled = false;
CheckBox2.Enabled = false;
// ******************************************************************
f.Show()
WSO.Run()
// ******************************************************************
// Функция сохраняет текст письма
// ******************************************************************
function SaveMailToFile(){
var j,oFolder, oFile, oTemp;
for(j=0; j<=data_array.length-1;j++){
oTemp = data_array[j].dText;
edit2.Text = oTemp;
if (CheckBox2.State==true){
oFolder = LPath.Text + "\\" +data_array[j].dMail;
if(FSO.FolderExists(oFolder) == false){
FSO.CreateFolder(oFolder);
}
oFile=FSO.CreateTextFile(oFolder + "\\" + data_array[j].dAvtor + "_" + data_array[j].dMail + "_" + j + ".txt", true); //как сохранять электронную почту
oFile.WriteLine(edit2.Text);
oFile.Close();
}else{
oFile=FSO.CreateTextFile(LPath.Text + "\\" + data_array[j].dAvtor + "_" + data_array[j].dMail + "_" + j + ".txt", true);
oFile.WriteLine(edit2.Text);
oFile.Close();
}
}
//Сообщаем об успешной операции
WScript.Echo("Письма сохранены в папке: " + LPath.Text);
};
// ******************************************************************
// ******************************************************************
// Функция сохраняет все вложения
// ******************************************************************
function SaveAllAttach(){
var objMail, success, getObjMail,eMail;
var oAttach = "";
objMail= WScript.CreateObject("Chilkat_9_5_0.MailMan");
success = objMail.UnlockComponent("30-day trial");
if (success != 1){WScript.Echo("Компонент не удалось разблокировать!!!!");WScript.Quit();}
objMail.MailHost = LServer.Text;
objMail.PopUsername = LMail.Text;
objMail.PopPassword = LPass.Text;
objMail.MailPort = parseInt(LPort.Text);
if (CheckBox1.State==true){objMail.PopSsl=1;}else{objMail.PopSsl=0}
getObjMail = objMail.CopyMail();
if (getObjMail == null){WScript.Echo("Ошибка соединения !!!!\n\n" + objMail.LastErrorText);WScript.Quit();}
for (i=0; i<=getObjMail.MessageCount-1; i++){
eMail = getObjMail.GetEmail(i);
eMail.OverwriteExisting = 0
success = eMail.SaveAllAttachments(LPath.Text)
if (success != 1){WScript.Echo("Ошибка соединения !!!!\n\n" + eMail.LastErrorText);WScript.Quit();}
}
//Сообщаем об успешной операции
WScript.Echo("Вложения сохранены в папку: " + LPath.Text);
};
// ******************************************************************