Войти на сайт
Имя пользователя :
Пароль :

Восстановление пароля
Регистрация
Главная Правила сайта Статьи
» » Отправка письма правым кликом мыши
19-10-2021, 13:41 - (Программирование)

Предположим, перед нами стоит задача автоатизировать процесс отпрвки файлов через MS Office Outlook по одному или нескольким адресам электронной почты, например - ежедневно мы отправляем отчеты в отдел кадров.

Как отправить файл по электронной почте конкретному адресату, кликнув правой кнопкой мыши на файле, который мы хотим отправить, при этом в тексте письма ещё должна быть подпись с контактными данными и логотипом организации?
Для пользования такой возможностью необходимо выполнить следующие действия:
1. В программе MS Office Outlook настроить подписи для новых писем - Меню Файл -> Параметры ->Почта ->Подписи.
2. В случае если настроена одна подпись или установлена подпись по умолчанию для новых писем скачиваем и настраиваем под себя этот скрипт automail_1.zip [1,18 Kb] (cкачиваний: 0), а в случае нескольких подписей скачиваем и настраиваем automail.zip [1,41 Kb] (cкачиваний: 0) под себя и сохраняем его в папке прописанной в переменной окружения Windows - Path или добавить в данную переменную путь к файлу скрипта. В Windows 10, чтобы настроить переменную Path щелкаем левой кнопкой мыши по кнопке Windows в левом нижнем углу, далее - параметры -> О программе -> Дополнительные параметры системы, в открывшемся окне жмём кнопку "Переменные среды" -> Переменные среды пользователя. Отличие первой версии от второй в том, что в первой письмо создается с подписью по умолчанию, а во второй можно настроить путь к любой подписи. Файлы подписи находятся в папке C:\Users\Имя_пользователя\AppData\Roaming\Microsoft\Signatures в файле с "названием подписи.htm". При наличии картинки в подписи путь к этой картинке в конце файла с "названием подписи.htm" следует заменить на абсолютный, например:
 <v:imagedata src="Подпись.files/image001.png" o:title="image001"/>
</v:shape><![endif]--><![if !vml]><img width=50 height=50
src="Подпись.files/image001.png" v:shapes="_x0000_i1025"><![endif]><i
style='mso-bidi-font-style:normal'><span style='font-size:12.0pt;font-family:
"Times New Roman",serif'>Сергей</span></i> </p>
</div>
</body>
</html>
- заменить на
 <v:imagedata src="C:\Users\Имя_пользователя\AppData\Roaming\Microsoft\Signatures\Подпись.files\image001.png" o:title="image001"/>
</v:shape><![endif]--><![if !vml]><img width=50 height=50
src='cid:C:\Users\Имя_пользователя\AppData\Roaming\Microsoft\Signatures\Подпись.files\image001.png' v:shapes="_x0000_i1026"><![endif]><i
style='mso-bidi-font-style:normal'><span style='font-size:12.0pt;font-family:
"Times New Roman",serif'>Сергей</span></i>
</div>
</body>
</html>
3. Создать ярлык для запуска файла скрипта в папке C:\Users\Имя_пользователя\AppData\Roaming\Microsoft\Windows\SendTo . Имя для ярлыка следует выбрать такое, как вы хотите видеть его в контекстном меню виндовс, например "Отправить в отдел кадров", имя ярлыка в этом случае будет "Отправить в отдел кадров.lnk"
Разберем подробнее скрипт отправки письма.
Первый вариант с подписью по умолчанию:

/*
v2021.10.18
Скрипт для формирования письма в MS Office Outlook, вложением файла(лов), формирование темы письма
*/

/*                Настройки                   */
var myTema="Тема ";
var myBody="";     //текст письма
var myFrom="маил@yandex.ru";//от кого (емайл адрес учётной записи, с которой отправлять)
//var myAdres="Шевченко Татьяна";//"ok@yandex.ru";     //куда отправлять(Имя (Точное!) из адресной книги или адрес)
var myAdres=myFrom;//куда отправлять (для тестирования)

/*                Настройки                   */
var Signature = "";
var wsh=WScript.CreateObject("WScript.Shell");
var objArgs=WScript.Arguments;
//проверка наличия аргументов
if(objArgs.length<1){
    WScript.Echo("Не хватает обязательных параметров")
    WScript.Quit(2); // выход с кодом 2 - ошибка отправки
}


var fso = WScript.CreateObject("Scripting.FileSystemObject");

//Отправка через OutLook
    //Проверяем не открыт ли уже MS Outlook
    try{
        cdo=GetObject("","Outlook.Application");
        var outlookStarted=1;
    }
    catch (e){
        //Если ошибка то не открыт и запускаем его
        //if(e.number!=0) WScript.Echo("e="+e.number+"\nописание"+e.description);
        //OlNotRunning = True;
        wsh.run("outlook.exe");
        cdo=WScript.CreateObject("Outlook.Application");
        var outlookStarted=2;
    }
    oNSpace = cdo.GetNamespace("MAPI");
    oAccounts = oNSpace.Accounts;
    for(i=1; i<=oAccounts.Count;i++){
        if(oAccounts(i).SmtpAddress == myFrom){
            var myMail=cdo.CreateItem(0);
            myMail.Display(); //отображаем для редактирования
            var AttachmentsFile=myMail.Attachments;
            myMail.To=myAdres;
            myMail.CC="";
            myMail.Subject=myTema;
            //вложения
            for(k=0; k<objArgs.length;k++){
                AttachmentsFile.Add(objArgs(k));
                myMail.Subject=k>0 ? myMail.Subject + ", " + fso.GetBaseName(objArgs(k)) : myMail.Subject + fso.GetBaseName(objArgs(k));
            }
            //myMail.Send(); //Посылаем письмо
        };
    }
    //завершаем работу - очищаем объекты
    cdo.Nothing;
    myMail.Nothing;
WScript.Quit(0); // выход с кодом 0 - ОК
И второй вариант немного сложнее, в котором можно настроить путь к любой подписи:
 
/*
v2021.10.18
Скрипт для формирования письма в MS Office Outlook, вложением файла(лов), формирование темы письма
*/

/*                Настройки                   */
var myTema="Тема ";
var myBody="";     //текст письма
var myFrom="маил@yandex.ru";//от кого (емайл адрес учётной записи, с которой отправлять)
//var myAdres="Шевченко Татьяна";//"ok@yandex.ru";     //куда отправлять(Имя (Точное!) из адресной книги или адрес)
var myAdres=myFrom;//куда отправлять (для тестирования)

/*                Настройки                   */
var Signature = "";
var wsh=WScript.CreateObject("WScript.Shell");
var SigString = "C:\\Documents and Settings\\" + wsh.ExpandEnvironmentStrings( "%USERNAME%" ) + "\\Application Data\\Microsoft\\Signatures\\подпись.htm"; //путь к файлу подписи
var objArgs=WScript.Arguments;
//проверка наличия аргументов
if(objArgs.length<1){
    WScript.Echo("Не хватает обязательных параметров")
    WScript.Quit(2); // выход с кодом 2 - ошибка отправки
}

var fso = WScript.CreateObject("Scripting.FileSystemObject");
if(fso.FileExists(SigString)){
    var ts = fso.OpenTextFile(SigString);
    while(!ts.atEndOfStream){
        Signature = Signature + ts.ReadLine();
    }
}
else{
    Signature = "";
}
//WScript.Echo(SigString);

//Отправка через OutLook
    //Проверяем не открыт ли уже MS Outlook
    try{
        cdo=GetObject("","Outlook.Application");
        var outlookStarted=1;
    }
    catch (e){
        //Если ошибка то не открыт и запускаем его
        //if(e.number!=0) WScript.Echo("e="+e.number+"\nописание"+e.description);
        //OlNotRunning = True;
        cdo=WScript.CreateObject("Outlook.Application");
        var outlookStarted=2;
    }
    //WScript.echo(cdo.Accounts(0).SmtpAddress);
    oAccounts = cdo.GetNamespace("MAPI").Accounts;
    for(i=1; i<=oAccounts.Count;i++){
        //WScript.echo(oAccounts(i).SmtpAddress);
        if(oAccounts(i).SmtpAddress == myFrom){
            var myMail=cdo.CreateItem(0);
            var AttachmentsFile=myMail.Attachments;
            myMail.To=myAdres;
            myMail.CC="";
            myMail.Subject=myTema;
            myMail.BodyFormat = 2;
            myMail.HTMLBody = myBody + "<br><br>" + Signature;
            //вложения
            for(k=0; k<objArgs.length;k++){
                AttachmentsFile.Add(objArgs(k));
                myMail.Subject=k>0 ? myMail.Subject + ", " + fso.GetBaseName(objArgs(k)) : myMail.Subject + fso.GetBaseName(objArgs(k));
            }
            myMail.Display(); //отображаем для редактирования
            myMail.SendUsingAccount = oAccounts(i);
            //myMail.Send(); //Посылаем письмо
        };
    }
    //if(outlookStarted==2)cdo.Quit(); //закрытие OutLook

WScript.Quit(0); // выход с кодом 0 - ОК



Похожие материалы

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Рейтинг@Mail.ru