none
Как отправить письмо через VBS? RRS feed

Все ответы

  • Посмотрите эту статью

     

    http://www.microsoft.com/technet/scriptcenter/resources/qanda/nov04/hey1129.mspx

     

    Рассмотрена отправка простого текста и вложения.

     

    6 января 2008 г. 17:58
    Модератор
  • Я этот пример видел.

    Set myMail=CreateObject("CDO.Message")
    myMail.Subject="Sending email with CDO"
    myMail.From="myemail1@mail.ru"
    myMail.To="myemail2@mail.ru"
    myMail.TextBody="This is a message."
    myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing")=2
    'Name or IP of remote SMTP server
    myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") ="smtp.mail.ru"
    'Server port
    myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") =25
    myMail.Configuration.Fields.Update
    myMail.Send
    set myMail=nothing

    myemail1,myemail2- это мои реально существующии почтовые ящики на маил.ру
    При запуске появляется ошибка
    ---------------------------
    Сервер сценариев Windows
    ---------------------------
    Сценарий:    C:\SendEmail.vbs
    Строка:    12
    Символ:    1
    Ошибка:    Na?aa? ioeeiiee iaei eee ianeieuei aa?ania iieo?aoaeae. Ioeeee na?aa?a: 550 not local sender over smtp

    Код:    8004020F
    Источник:     (null)

    ОС Windows 2003. Из-за уродского русскоязычного интерфейса не погимаю что он говорит. В логах ничего не пишет.


    6 января 2008 г. 20:50
  • Возможно, проблема в том, что вы пытаетесь отправить письмо без аутентификации. А поскольку не являетесь локальным хостом relay Вам запрещен.

     

    Обсуждение посмотрите здесь:

    http://www.gotdotnet.ru/Forums/Web/145262.aspx

     

    http://www.myopera.net/forums/arhiv/14724.html

    7 января 2008 г. 10:37
  • как мне это перевести в vbs?

     MailMessage message = new MailMessage(); // формируем мыло
     message.From = "vhaet_&_hotmail.com";
     message.To = "webmaster_&_vario.ru";
     message.Subject = "MailMessage to Leonov";
     message.Body = "To Leonov from Viktor Haet";
     message.BodyFormat = MailFormat.Text;

    // SmtpMail.SmtpServer = "localhost";//smtpServer; // тут в значении localhost
     SmtpMail.Send(message);

    Но! Некоторые серверы-адресаты (например, "web.de") отклоняют такой MailMessage, видимо определяя локалный SMTP-сервер как источник. При этом, кстати, в протоколе событий системы появляется новая запись.  Поэтому я пользуюсь "внешним" SMTP-сервером. Для этого код такой:

     MailMessage message = new MailMessage(); // формируем мыло
     message.From = "vhaet_&_hotmail.com";
     message.To = "webmaster_&_vario.ru";
     message.Subject = "MailMessage to Leonov";
     message.Body = "To Leonov from Viktor Haet";
     message.BodyFormat = MailFormat.Text;

     message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");// 'basic authentication
     message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "****"); 

     message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "****");

     SmtpMail.SmtpServer = "notebookov.net";
     SmtpMail.Send(message);


    7 января 2008 г. 14:31
  • Code Snippet

    ///////////////////////////////////////////////////////////////
    // Скрипт: SendMail.js            //
    //  Описание: отправка сообщения по электронной почте       //
    //  Язык: JScript           //
    //////////////////////////////////////////////////////////////

    var objEmail;          //CDO объект для отправки сообщения
    var MessText;          //Текст сообщения
    var AttFile;          //Файл вложения.

    //Формируем текст сообщения
    MessText = "Данное сообщение послано\n";
    MessText +="скриптом Sendmail.js\n";

    AttFile = "C:\Temp\1.txt";        //Указываем путь к файлу, который необходимо вложить в сообщение
    objEmail = WScript.CreateObject("CDO.Message");    //Создаем объект CDO и получаем на него ссылку в переменную objEmail

    ////////////////////////////////////////////////////
    // Указание необходимых параметров объекта CDO   //
    ////////////////////////////////////////////////////
    objEmail.From = "\"Отправитель\" script@company.ru";  //параметры отправителя (имя и адрес электронной почты)   
    objEmail.To = "admin@company.ru";       //адрес электронной почты получателя
    objEmail.Subject = "Проверка связи";      //тема сообщения   
    objEmail.AddAttachment(AttFile);       //файла вложения
    objEmail.Textbody = MessText;        //текст сообщения 

    //Отправить сообщение используя сетевую SMTP-службу (1 - используется для отправки через локальную SMTP-службу)
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2;    
    //Указание имени SMTP-сервера  
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.company.ru";
    //Указание SMPT-порта на сервере
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25;
    //Обновить конфигурацию CDO-объекта
    objEmail.Configuration.Fields.Update();
    //Послать сообщение с помощью метода Send()
    objEmail.Send();

     

     

    Code Snippet

    ''''''''''''''''''''''''''''''''''''''''''''''''''''
    '  Скрипт: SendMail.vbs        
    '  Описание: отправка сообщения по электронной почте
    '  Язык: VBScript      
    ''''''''''''''''''''''''''''''''''''''''''''''''''''
    Option Explicit

    Dim objEmail  'CDO объект для отправки сообщения
    Dim MessText  'Текст сообщения
    Dim AttFile   'Файл вложения.

    'Формируем текст сообщения
    MessText = "Данное сообщение послано" & VbCrLf
    MessText = MessText + "скриптом Sendmail.vbs" & VbCrLf

    AttFile = "C:\Temp\1.txt"        'Указываем путь к файлу, который необходимо вложить в сообщение
    Set objEmail = WScript.CreateObject("CDO.Message")  'Создаем объект CDO и получаем на него ссылку в переменную objEmail 

    ''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Указание необходимых параметров объекта CDO  
    ''''''''''''''''''''''''''''''''''''''''''''''''''''
    objEmail.From = "Отправитель"" script@company.ru"   'параметры отправителя (имя и адрес электронной почты)   
    objEmail.To = "admin@company.ru"       'адрес электронной почты получателя
    objEmail.Subject = "Проверка связи"       'тема сообщения   
    objEmail.AddAttachment(AttFile)        'файла вложения
    objEmail.Textbody = MessText        'текст сообщения 

    'Отправить сообщение используя сетевую SMTP-службу (1 - используется для отправки через локальную SMTP-службу)
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2    
    'Указание имени SMTP-сервера  
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.company.ru"
    'Указание SMPT-порта на сервере
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    'Обновить конфигурацию CDO-объекта
    objEmail.Configuration.Fields.Update
    'Послать сообщение с помощью метода Send
    objEmail.Send

     

     

    6 октября 2008 г. 12:19
  • Это всё конечно очень хорошо, только вот очень часто возникает необходимость отправлять письма внутри компании. Как отправить письмо не через SMTP, а внутри домена через Exchange?

    10 октября 2008 г. 7:08
  • а не посредственно на exchange что то мешает получать почту по smtp внутри сети? и потом это сообщение будет нормально уходить на ящики MAPI без всяких проблем.
    10 октября 2008 г. 8:36
  • Отправка внутри организации сработала при замене значения objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 1

    То есть:

    Set myMail=CreateObject("CDO.Message")
    myMail.Subject="Sending email with CDO"
    myMail.From="Иванов Иван Иванович <ivanov-ii@organisationdomain.ru>"
    myMail.To="Петров Петр Петрович <petrov-pp@organisationdomain.ru>"
    myMail.TextBody="This is a message."
    myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing")=1
    'Name or IP of remote SMTP server
    myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") ="POST.organisationdomain.ru"
    'Server port
    myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") =25 
    myMail.Configuration.Fields.Update
    myMail.Send
    set myMail=nothing