Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » ??? Скрипт vbs отправки файла по почте ???

Модерирует : ShIvADeSt

ShIvADeSt (14-02-2011 05:30): по вбс своя тема  Версия для печати • ПодписатьсяДобавить в закладки

   

wwwad

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите ! Нужен скрипт (желательно .vbs) который отправляет определенный файл по почте (желательно theBAT) на определенный адрес. Может есть у кого готовый ?

Всего записей: 6 | Зарегистр. 30-03-2005 | Отправлено: 00:41 30-03-2005
distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vb-скриптом не пользуюсь...
 

Код:
 
function SendMail(sRecipientMail, sSubject, sMsgBody)
{
    try
    {
        // create a session and log on -- username and password in profile  
        var refMsg = WScript.CreateObject("CDO.Message");
        var refConf = WScript.CreateObject("CDO.Configuration");
         
        // Setting configuration params
        with(refConf.Fields)
        {
            Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "www.mysmtp.com";
            Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2;  
        }
        refConf.Fields.Update();
 
        with(refMsg)
        {
            Configuration = refConf;
            To       = sRecipientMail;
            From     = "billgates@microsoft.com";
            Subject  = sSubject;
            TextBody = sMsgBody;
        }
        refMsg.Send();
    }  
    catch(e)
    {
        WScript.Echo("SendMail error: " + e.description);
        WScript.Quit(1);
    }
}
 


Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 02:14 30-03-2005
wwwad

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
distance спасибо . если можно еще чуточку помочь ...
 
1) Я так понимаю это все забить в нотепаде и запомнить с каким расширением ?
 
2)если я правильно понял это только функция - надо еще в начале написать процедуру в которой вызывается эта функция   SendMail .  Только я с синтаксисом незнаком - если не трудно можно ли набросать код этой процедуры
 
3)Что неправильно понял ? Например вот такие МОИ параметры :
 
sRecipientMail = "pupkin@mail.ru"   - это почта куда шлю
sSubject = "пробное письмо"          - это типа ТЕМА, да ?
sMsgBody = "С:/Отчет.xls "             -  сюда что можно вписать адрес файла ?  
From = "mymail@mail.ru"  вместо "billgates@microsoft.com"      
 
непонятно только строка  Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "www.mysmtp.com"    - это что ? надо оставлять или менять ?   И как это связано с моим smtp ? если например почта на mail.ru   - то что писать то ???  

Всего записей: 6 | Зарегистр. 30-03-2005 | Отправлено: 00:05 31-03-2005
distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
wwwad

Цитата:
1) Я так понимаю это все забить в нотепаде и запомнить с каким расширением ?

.js
 

Цитата:
Только я с синтаксисом незнаком - если не трудно можно ли набросать код этой процедуры


Код:
 
var to = "pupkin@mail.ru";
var subj = "тема письма";
var text = "собственно тело письма";
SendMail(to, subj, text);
 

 

Цитата:
непонятно только строка  Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")

это так называемый обьект конфигурации. его в принципе может и не быть - тогда будут использоваться значения по умолчанию (сервер отправки, порт etc)
строка "http://schemas.microsoft.com/cdo/configuration/" - это просто пространство имен, т.е. что-то вроде префикса переменным для обеспечения уникальности (вольный перевод msdn)
 

Цитата:
sMsgBody = "С:/Отчет.xls "             -  сюда что можно вписать адрес файла ?  

а, в смысле тебе нужно внешний файл приаттачить. такого мне не было нужно, но тоже делается просто
with(refMsg)
{
   // то же что и раньше
   AddAttachment("c:\\swap.tmp");   // чем больше строк - тем больше файлов приаттачится - рай для спаммера))
}
 
с учетом возможности аттачинга, я бы сделал функцию такой:

Код:
 
function SendMail(sRecipientMail, sSubject, sMsgBody,files)  
{  
    try  
    {  
        // create a session and log on -- username and password in profile  
        var refMsg = WScript.CreateObject("CDO.Message");  
        var refConf = WScript.CreateObject("CDO.Configuration");  
         
        // Setting configuration params  
        with(refConf.Fields)  
        {  
            Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "www.mysmtp.com";  
            Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2;  
        }  
        refConf.Fields.Update();  
 
        with(refMsg)  
        {  
            Configuration = refConf;  
            To       = sRecipientMail;  
            From     = "billgates@microsoft.com";  
            Subject  = sSubject;  
            TextBody = sMsgBody;  
        }
 
        if (files)
        {
            for(var i=0; i<files.length; i++)
                refMsg.AddAttachment(files[i]);
        }
 
        refMsg.Send();  
    }  
    catch(e)  
    {  
        WScript.Echo("SendMail error: " + e.description);  
        WScript.Quit(1);  
    }  
}
 

 
вызов:
 
SendMail(to, subj, text, ["c:\\1.txt", "c:\\2.txt"]);
 

Цитата:
если например почта на mail.ru   - то что писать то ???

если mail.ru поддерживает протокол отправки smtp (вроде должен) тебе нужно использовать соответствующее доменное имя, например smtp.mail.ru или что-то типа того.
проверить это можно командой telnet имя_сервера 25

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 02:45 31-03-2005
wwwad

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
очень очень большое спасибо за внимание.
 
непонятен пункт // Setting configuration params     непонятен не в том как он работает (ясно что не пойму пока  - объяснять нестоит) непонятно мне что писать то ?
 
Например я пользуюсь theBatom и вот те реальные параметры которые требуются theBaty  для отправки писем :  
 
1) vadim422@yandex.ru
2) smtp.yandex.ru
3) "mypassword"   для smtp
 
Их то где соответствие в скрипте ?  
 
1) Smtp я так понял указывается через Item  
Т.е. ведь это бред так определять Item?

Цитата:
 // Setting configuration params  
        with(refConf.Fields)  
        {  
            Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.yandex.ru";  
            Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2;    
        }  

А как? и оставлять ли  мне второй пункт где он = 2 ???
 
2) Насчет vadim422@yandex.ru понятно - это пункт From
т.е. From="vadim422@yandex.ru"
 
3) А как насчет "mypassword"   ???    
 --------------------------------------------------------
 
Возможно что я не получаю доконца понятный мне ответ изза того что сам невнятно задаю вопрос. Если можно я задам его заново ???
 
файл для отправки    :     1.txt
адрес получателя      :     pupkin@mail.ru
мои параметры почты :     vadim422@yandex.ru
                                       smtp.yandex.ru
                                      "mypassword"    
дополнительные параметры отправки почты(возможно специфичные только для theBat) :
Аутентификация SMTP (RFC-2554) = True
 
В данном случае переменные равны следующим значениям :
-------------------------------
var to = "pupkin@mail.ru";  
var subj = "тема письма";  
var text = "собственно тело письма";
SendMail(to, subj, text, ["c:\\1.txt"]);
 
а в поцедуре SendMail  
From = "vadim422@yandex.ru";
Item(???) = ???;
Item(???)=2;
---------------------------------
 

Всего записей: 6 | Зарегистр. 30-03-2005 | Отправлено: 02:03 01-04-2005
distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
wwwad

Цитата:
А как? и оставлять ли  мне второй пункт где он = 2 ???

оставлять нужно, это определяет способ отсылки. В js не видны именованные константы, поэтому приходится юзать их численные значения.
 

Цитата:
3) А как насчет "mypassword"   ???    

для авторизации на smtp сервере добавь
Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1;
Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "твой логин для почты";
Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "твой пароль";
 
если в сети используется прокси сервер, то также нужно добавить:
Item("http://schemas.microsoft.com/cdo/configuration/urlproxyserver") = "www.someproxy.com:8080";
 
если и прокся требует авторизации, тогда не знаю

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 17:45 01-04-2005 | Исправлено: distance, 17:48 01-04-2005
wwwad

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
БЛИННН - не отправляет !!! вот что пишет :

Цитата:
SendMail error !!! : Неудалось отправить сообщение на SMTP-сервер. Код ошибки транспорта:0х80040217.Отклик сервера: not available

 
А вроде все правильно написал в скрипте. Вот он :

Цитата:
var to = "vadim422@yandex.ru";  
var subj = "тема письма";  
var text = "собственно тело письма";  
 
SendMail(to, subj, text, ["c:\\1.txt", "c:\\2.txt"]);
 
 
function SendMail(sRecipientMail, sSubject, sMsgBody,files)  
{  
    try  
    {  
        // create a session and log on -- username and password in profile    
        var refMsg = WScript.CreateObject("CDO.Message");  
        var refConf = WScript.CreateObject("CDO.Configuration");  
           
        // Setting configuration params  
        with(refConf.Fields)  
        {  
            Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.yandex.ru";  
            Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2;
Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1;  
Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "vadim422@yandex.ru";  
Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "*******";
        }  
        refConf.Fields.Update();  
   
        with(refMsg)  
        {  
            Configuration = refConf;  
            To       = sRecipientMail;  
            From     = "vadim422@yandex.ru";  
            Subject  = sSubject;  
            TextBody = sMsgBody;  
        }  
 
        if (files)  
        {  
            for(var i=0; i<files.length; i++)  
                refMsg.AddAttachment(files[i]);  
        }  
 
        refMsg.Send();  
    }    
    catch(e)  
    {  
        WScript.Echo("SendMail error !!! : " + e.description);  
        WScript.Quit(1);  
    }  
}  
 

 
Что же не так ???
И еще вопрос - отправка почты с помощью js скрипта возможен только с помощью "http://schemas.microsoft.com"  ?  может у них там проблема ?

Всего записей: 6 | Зарегистр. 30-03-2005 | Отправлено: 09:19 02-04-2005
distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
wwwad
Думаю проблема в яндексе.
у меня этот стрипт исправно отсылает почту уже долгое время.
а недевно проверил, и файлы аттачатся нормально.

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 12:52 05-04-2005
wwwad

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
distance
если дело в Яндексе -  подскажи пожалуйста  
каким сервером пользуешься ты - я тогда тоже там создам почту - очень надо чтобы скрипт заработал

Всего записей: 6 | Зарегистр. 30-03-2005 | Отправлено: 00:25 06-04-2005
distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
там не получится это сервер у меня на работе.
возможно, яндексу требуется дополнительная настройка в свойствах ящика... например в Google Mail по умолчанию pop3-протокол заблокирован и его нужно вручную разрешить.
 
ps. Если в системе установлен Microsoft Outlook (не Express) то можно использовать его сервер автоматизации для отправки почты. Но в этом направлении не копал...
пошарь по google строку Outlook.Application, должны найтись всякие примеры. Удачи.

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 12:28 06-04-2005
wwwad

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все . Вопросов больше не имею  . Спасибо огромное !!!

Всего записей: 6 | Зарегистр. 30-03-2005 | Отправлено: 00:02 07-04-2005
Mark_Titov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
'Отправить сообщение с помощью локальной службы SMTP
Const cdoSendUsingPickup = 1  
Set objMessage = CreateObject("CDO.Message")  
' Тема сообщения и адрес отправителя
objMessage.Subject = "Тема письма"  
objMessage.From = """Генератор отчетов"" "
' Получатели письма указываются через " ; "
objMessage.To = "login@yandex.ru"  
' Содержимое тела письма.  
objMessage.TextBody = "JSC AUTO SERVICE. Please find Orders reporting in attachment." & vbCRLF & _  
"------------------------------------------" & vbCRLF & _  
"Best regards, Auto report service" & vbCRLF & _
"Support line: it@domian.ru" & vbCRLF  
' Добавляем файл - вложение для отправки отчета по EMail
objMessage.AddAttachment "C:\1.txt"
' Секция настроек SMTP сервера для отправки почты.  
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2  
' Имя или IP адрес SMTP Server
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "login@yandex.ru"
' Тип используемой авторизации, NONE, Basic (Base64 encoded), NTLM
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic
' SMTP server
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.yandex.ru"  
' Авторизация на SMTP server
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "login"
' Пароль SMTP server
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"
' Порт SMTP Server port (обычно 25, но может быть и другим)  
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25  
' Использование SSL для соединения (False или True)  
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
' Время ожидания соединения с почтовым сервером
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
' Сохранить настройки CDO для отправки сообщения
objMessage.Configuration.Fields.Update
' Отправить созданное почтовое сообщение с вложением по указанному адресу
objMsg.Send
Wscript.Echo "Отправка завершена"
Wscript.Quit

 
Интересует 2 вещи -
1 - ругается на строку отправки письма objMsg.Send
2 - кто-нибудь может объяснить что это за строки, что туда надо вставлять и нужны ли они вообще -

Код:
' Содержимое тела письма.  
objMessage.TextBody = "JSC AUTO SERVICE. Please find Orders reporting in attachment." & vbCRLF & _  
"------------------------------------------" & vbCRLF & _  
"Best regards, Auto report service" & vbCRLF & _
"Support line: it@domian.ru" & vbCRLF  

 
Заранее благодарю...
 
 
 
 

Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 11:43 13-02-2011 | Исправлено: Mark_Titov, 17:09 13-02-2011
   

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » ??? Скрипт vbs отправки файла по почте ???
ShIvADeSt (14-02-2011 05:30): по вбс своя тема


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

Рейтинг.ru