<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; JS: Получение и сортировка почтовых вложений]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=12678&amp;type=atom" />
	<updated>2017-05-21T18:53:08Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=12678</id>
		<entry>
			<title type="html"><![CDATA[Re: JS: Получение и сортировка почтовых вложений]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=115980#p115980" />
			<content type="html"><![CDATA[<p><strong>oleg1345140</strong>, к сожалению в самой утилите - нет. Для поддержки SSL используют доп. утилиту stunnel.</p><p>Либо альтернативный вариант используя <strong>cygwin</strong> - <a href="http://lifehacker.com/235207/geek-to-live--back-up-gmail-with-fetchmail">ссылка</a></p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2017-05-21T18:53:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=115980#p115980</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Получение и сортировка почтовых вложений]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=115965#p115965" />
			<content type="html"><![CDATA[<p><strong>Xameleon</strong>к сожалению не получилось подключится. Данный клиент поддерживает шифрование?</p>]]></content>
			<author>
				<name><![CDATA[oleg1345140]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=37353</uri>
			</author>
			<updated>2017-05-21T06:16:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=115965#p115965</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Получение и сортировка почтовых вложений]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=115887#p115887" />
			<content type="html"><![CDATA[<p><strong>oleg1345140</strong>, думаю Вам вполне подойдёт консольная утилита <strong>getmail.exe</strong>. Её можно загрузить по <a href="http://www.interlog.com/~tcharron/getmail.html">ссылке</a>.</p><p>Описание:<br /></p><div class="codebox"><pre><code>
GetMail v1.33: WinNT console utility to download a mailbox&#039;s mail.
syntax:
  Getmail -u &lt;user&gt; -pw &lt;password&gt; -s &lt;server&gt; [optional switches (see below)]
  Getmail -install [ see install details below ]
  Getmail -profile [-delete | &quot;&lt;default&gt;&quot;] [profile1] [profileN] [-q]
  Getmail -h [-q]
  Getmail -forceextract filename

-install &lt;server&gt; &lt;userid&gt; &lt;password&gt; [&lt;delete&gt; [&lt;xtract&gt; [&lt;try&gt; [&lt;port&gt; [&lt;profile&gt;]]]]]
     : set&#039;s POP3 server, login, password, whether to delete or not (Yes/No),
       whether to automatically extract base64/7bit/UU encoded files or not (Yes/No),
       number of tries and port for profile
       (&lt;delete&gt; &lt;xtract&gt; &lt;try&gt; and &lt;port&gt; may be replaced by &#039;-&#039;).

-u &lt;userid&gt;   : Specify userid on remote pop3 host
-pw &lt;password&gt;: Specify password for userid on remote mail host
-s &lt;server&gt;   : Specify mail server (pop3) to contact
-nodelete     : Do not delete messages after downloading (default)
-delete       : Delete messages after downloading
-noxtract     : Do not extract base64/7bit/UU files after downloading (default)
-xtract [defname]: Extract base64/7bit/UU encoded files after downloading messages
                   defname is an optional default filename for the extracted file
-domainstamp  : Prepend sender&#039;s domain name to extracted attachments
-headersonly  : Download only the headers of the message
-port &lt;port&gt;  : port to be used on the server, defaults to POP3 (110)
-p &lt;profile&gt;  : send with SMTP server, user and port defined in &lt;profile&gt;.
-q            : supresses *all* output.
-n &lt;n&gt;        : Only get &#039;n&#039; messages
-m &lt;n&gt;        : Only get message # n
-b &lt;n&gt;        : Retrieve messages beginning from # n
-plain        : Extract text/plain segments too (usually ignored)
-h            : displays this help.
-try &lt;n times&gt;: how many attempts to access mail.  from &#039;1&#039; to &#039;INFINITE&#039;
-ti &lt;n&gt;       : Set timeout to &#039;n&#039; seconds.
-forceextract fn: Attempt to extract any encoded messages in &#039;fn&#039;
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2017-05-15T21:08:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=115887#p115887</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Получение и сортировка почтовых вложений]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=115863#p115863" />
			<content type="html"><![CDATA[<p>Cам я в программировании не силен, нашел скрипт выполняющий похожие функции смог исправить банальные неточности и запустить его, но скрипт обладает рядом недостатков и глюков:<br />1) Запускается в виде окна, соответственно требует управления и взаимодействия с ним<br />2)Не стабильно работает, часто при верной паре логин/пароль выдает информацию о том что не удалось подключится. Подобную ошибку выдает при попытке скачать вложения после анализа почты.<br />3) Не создает подпапки по расширению.<br />Собственно сам скрипт:<br /></p><div class="codebox"><pre><code>// ***********************************************************
// Скрипт показывает, как сохранить электронную почту
// и все вложения (прикрепленные файлы)
// SaveMail.js
// ***********************************************************

// Глобальные переменные
var WSO, FSO, f, WshShell;
var data_array = [];

WSO = WScript.CreateObject(&quot;Scripting.WindowSystemObject&quot;);
FSO = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;);
WshShell = WScript.CreateObject(&quot;WScript.Shell&quot;);

// ******************************************************************
//						параметры формы
// ******************************************************************
f = WSO.CreateForm(0,0,0,0);
f.ClientWidth = 800;					// ширина
f.ClientHeight = 600;					// высота
f.CenterControl();						// по центру
f.Text = &quot;Почтовый клиент&quot;;	// название
f.SizeGrip = false;						// нельзя менять размеры
f.MaximizeBox = false;				// нельзя развернуть форму
// ******************************************************************

// ******************************************************************
//Текстовое поле для отображения содержимого письма
// ******************************************************************
edit2 = f.CreateEdit(0,410,800,190,WSO.Translate(&quot;ES_MULTILINE&quot;));
edit2.ScrollBars = WSO.Translate(&quot;SS_BOTH&quot;);
edit2.ReadOnly = true;
edit2.WordWrap = true;
// ******************************************************************

// ******************************************************************
// 							Метки и чекбоксы
// ******************************************************************
label1 = f.TextOut(480,10,&quot;Сервер&quot;);
LServer = f.CreateEdit(590,10,200,20,WSO.Translate(&quot;ES_MULTILINE&quot;));
LServer.Text=&quot;pop.rambler.ru&quot;;				// содержит имя почтового сервера

label2 = f.TextOut(480,30,&quot;Мыло&quot;);
LMail = f.CreateEdit(590,30,200,20,WSO.Translate(&quot;ES_MULTILINE&quot;));
LMail.Text=&quot;test@rambler.ru&quot;;			// содержит имя почтового ящика																																				как сохранить электронную почту

label3 = f.TextOut(480,50,&quot;Пароль&quot;);
LPass = f.CreateEdit(590,50,200,20,WSO.Translate(&quot;ES_MULTILINE&quot;));
LPass.Text=&quot;xxx&quot;;					// содержит пароль от почтового ящика

label4 = f.TextOut(480,70,&quot;Порт&quot;);
LPort = f.CreateEdit(590,70,200,20,WSO.Translate(&quot;ES_MULTILINE&quot;));
LPort.Text=&quot;995&quot;;										// содержит номер порта для подключения

label5 = f.TextOut(480,90,&quot;Каталог&quot;);
LPath = f.CreateEdit(590,90,200,20,WSO.Translate(&quot;ES_MULTILINE&quot;));
LPath.Text=WshShell.CurrentDirectory;	// каталог, куда будут сохраняться письма

// если галочка поставлена - письма будут сортироваться по отдельным каталогам
CheckBox2 = f.CreateCheckBox(480,110,130,25,&quot;В отдельную папку&quot;);		
// если галочка поставлена - происходит включение шифрования SSL
CheckBox1 = f.CreateCheckBox(480,130,130,25,&quot;SSL&quot;);
// ******************************************************************

// ******************************************************************
//										Кнопки
// ******************************************************************
Button1 = f.CreateButton(480,160,150,25,&quot;Анализировать почту&quot;)
Button1.OnClick = CreateListView; 			// Подключение к почтовому серверу

Button2 = f.CreateButton(480,190,150,25,&quot;Сохранить все письма&quot;)
Button2.OnClick = SaveMailToFile;			// Сохранение писем

Button3 = f.CreateButton(480,220,150,25,&quot;Сохранить все вложения&quot;)
Button3.OnClick = SaveAllAttach;			// Сохранение вложений

t = f.CreateHyperLink(490,250,250,25,&quot;www.scriptcoding.ru&quot;)
// ******************************************************************

// ******************************************************************
// Функция создает массив с данными
// ******************************************************************
function fill_data_array(){
var objMail, success, getObjMail,eMail;
var oAttach = &quot;&quot;;
	data_array.length = 0;
	
	// Подключаем компонент для работы с почтой
	objMail= WScript.CreateObject(&quot;Chilkat_9_5_0.MailMan&quot;);
	success = objMail.UnlockComponent(&quot;30-day trial&quot;);
	if (success != 1){WScript.Echo(&quot;Компонент не удалось разблокировать!!!!&quot;);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(&quot;Ошибка соединения !!!!\n\n&quot; + objMail.LastErrorText);WScript.Quit();}
	
	// Начинаем обработку все входящих писем																																																как сохранить всю электронную почту
	for (i=0; i&lt;=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: &quot;Автор&quot;, width:120, set_data: function(item, it) { item.Text = data_array[it].dAvtor; }},
	{ name: &quot;Тема&quot;, width:120, set_data: function(item, it) { item.SubItems(0) = data_array[it].dTema;  } },
	{ name: &quot;Мыло&quot;, width:120, set_data: function(item, it) { item.SubItems(1) = data_array[it].dMail;  } },
	{ name: &quot;Дата&quot;, 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(&quot;LVS_REPORT | LVS_SHOWSELALWAYS&quot;));
	list_view_obj.GridLines = true;
	list_view_obj.RowSelect = true;
	list_view_obj.ReadOnly = false;
	// Определяем имя и тип колонок
	for(var ix = 0; ix &lt; 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 &lt; def_columns.length; ++ix){
		for (var iy=0; iy&lt;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(&quot;Подключение прошло успешно.\n В вашем ящике &quot; + data_array.length + &quot;писем&quot;);
	
};
// ******************************************************************

// ******************************************************************
//				блокируем кнопки
// ******************************************************************
Button2.Enabled = false;
Button3.Enabled = false;
CheckBox2.Enabled = false;
// ******************************************************************

f.Show()
WSO.Run()

// ******************************************************************
// Функция сохраняет текст письма
// ******************************************************************
function SaveMailToFile(){
	var j,oFolder, oFile, oTemp;
	for(j=0; j&lt;=data_array.length-1;j++){
	
		oTemp = data_array[j].dText;
		edit2.Text = oTemp;
	
		if (CheckBox2.State==true){
			oFolder = LPath.Text + &quot;\\&quot; +data_array[j].dMail;
			if(FSO.FolderExists(oFolder) == false){
				FSO.CreateFolder(oFolder);
			}
			oFile=FSO.CreateTextFile(oFolder + &quot;\\&quot; + data_array[j].dAvtor + &quot;_&quot; + data_array[j].dMail + &quot;_&quot; + j + &quot;.txt&quot;, true);																				//как сохранять электронную почту
			oFile.WriteLine(edit2.Text);
			oFile.Close();
		}else{
			oFile=FSO.CreateTextFile(LPath.Text + &quot;\\&quot; + data_array[j].dAvtor + &quot;_&quot; + data_array[j].dMail + &quot;_&quot; + j + &quot;.txt&quot;, true);
			oFile.WriteLine(edit2.Text);
			oFile.Close();
		}
	}
	//Сообщаем об успешной операции
	WScript.Echo(&quot;Письма сохранены в папке: &quot; + LPath.Text);
};
// ******************************************************************

// ******************************************************************
// Функция сохраняет все вложения
// ******************************************************************
function SaveAllAttach(){
var objMail, success, getObjMail,eMail;
var oAttach = &quot;&quot;;
	objMail= WScript.CreateObject(&quot;Chilkat_9_5_0.MailMan&quot;);
	success = objMail.UnlockComponent(&quot;30-day trial&quot;);
	if (success != 1){WScript.Echo(&quot;Компонент не удалось разблокировать!!!!&quot;);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(&quot;Ошибка соединения !!!!\n\n&quot; + objMail.LastErrorText);WScript.Quit();}
	for (i=0; i&lt;=getObjMail.MessageCount-1; i++){
		eMail = getObjMail.GetEmail(i);
		eMail.OverwriteExisting = 0
		success = eMail.SaveAllAttachments(LPath.Text)
		if (success != 1){WScript.Echo(&quot;Ошибка соединения !!!!\n\n&quot; + eMail.LastErrorText);WScript.Quit();}
	}
	//Сообщаем об успешной операции
	WScript.Echo(&quot;Вложения сохранены в папку: &quot; + LPath.Text);
};
// ******************************************************************</code></pre></div>]]></content>
			<author>
				<name><![CDATA[oleg1345140]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=37353</uri>
			</author>
			<updated>2017-05-15T02:59:10Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=115863#p115863</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[JS: Получение и сортировка почтовых вложений]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=115861#p115861" />
			<content type="html"><![CDATA[<p>Доброе время суток. Излазил весь интернет но не нашел адекватного и работаюещего скрипта по загрузке почтовых вложений.<br />Задача следующая: Скрипт при запуске подключается к почтовому серверу через протокол pop3. Далее сканирует все письма и сохраняет их в папки по отправителям и по типу файла. Напимер письмо от a@domen.com с вложениями 1.exe и 2.gif, скрипт создаст в корне указанной папки папу a@domen.com, а в ней подпапки ехе и&nbsp; gif куда и положит соответствующие файлы. Если при помощи данного языка написать это не реально, подскажите на чем это возможно.</p>]]></content>
			<author>
				<name><![CDATA[oleg1345140]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=37353</uri>
			</author>
			<updated>2017-05-14T19:07:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=115861#p115861</id>
		</entry>
</feed>
