8.х Отправка почты из 1С

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем 1Cnica, 14 май 2009.

  1. TopicStarter Overlay
    1Cnica
    Offline

    1Cnica Опытный в 1С

    Регистрация:
    13 фев 2009
    Сообщения:
    416
    Симпатии:
    0
    Баллы:
    26
    Всем привет!
    У нас в УПП-шке есть документ. Надо, чтобы из формы при нажатии кнопки "Отправить" текст документа отправлялся на e-mail выбранному пользователю. Подскажите пожалуйста, как это реализовать? Или может в стандартных конфах есть подобное? Я нашла в типовой конфе док Электронное письмо, но там без поллитра не разберешь(( :unsure:
  2. tunec
    Offline

    tunec Опытный в 1С

    Регистрация:
    2 июн 2008
    Сообщения:
    469
    Симпатии:
    0
    Баллы:
    26
    вообще есть общий модуль Электронная почта. в ней есть процедура ПолучениеОтправкаПисем Оно умеет отправлять документы "электронное письмо", в типовой вызывается из обработки "почта" :) Я как-то залезал туда, но уж непомню зачем...
  3. Bonov
    Offline

    Bonov

    Регистрация:
    9 апр 2009
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    1Cnica, вот код процедуры, которая у меня отправляет почту. Основные параметры в константах.
    Код:
    //Отправка документов по электронной почте с фиксацией события в регистре DeliveryReports
    Procedure SendDocumentByEMail(DocumentRef, Recipient, MessageSubject, AttachmentFileName) Export
    //Пробуем подключиться
    Successful = False;
    Profile = New InternetMailProfile;
    Profile.SMTPServerAddress = Constants.SMTPServer.Get();
    If Constants.SMTPServerTimeout.Get() > 0 Then
    Profile.Timeout = Constants.SMTPServerTimeout.Get();
    EndIf; 
    Profile.SMTPPort = Constants.SMTPPort.Get();
    If Constants.SMTPRequiresAuthentication.Get() Then
    Profile.SMTPAuthentication = SMTPAuthenticationMode.Default;
    Profile.SMTPUser = Constants.SMTPLogin.Get();
    Profile.SMTPPassword = Constants.SMTPPassword.Get();
    EndIf;
    
    InternetMail = New InternetMail;
    LogonOK = False;
    Try
    InternetMail.Logon(Profile);
    LogonOK = True;
    Except
    ResultMessage = "Error connection to the server! Check SMTP Server settings." + Chars.LF + ErrorDescription();
    EndTry;
    
    //Создание письма и его отправка
    If LogonOK Then
    MailMessage = New InternetMailMessage;
    MailMessage.SenderName = SessionParameters.CurrentUser.Description;
    MailMessage.From = SessionParameters.CurrentUser.EMail;
    MailMessage.Subject = MessageSubject;
    MailMessage.To.Add(Recipient);
    MailMessage.Attachments.Add(AttachmentFileName, "Message");
    MessageText = Chars.LF + "Look the message in the attached file.";
    TextObject = MailMessage.Texts.Add(MessageText);
    Try
    InternetMail.Send(MailMessage);
    ResultMessage = "Message has been successfully sent";
    Successful = True;
    Except
    ResultMessage = "Error while sending the message!" + Chars.LF + ErrorDescription();
    EndTry;
    InternetMail.Logoff();
    EndIf;
    
    //Запись в регистр отчетов
    SendingReports = InformationRegisters.SendingReports.CreateRecordManager();
    SendingReports.Document = DocumentRef;
    SendingReports.Period = CurrentDate();
    SendingReports.Sender = SessionParameters.CurrentUser;
    SendingReports.Recipient = Recipient;
    SendingReports.Sent = Successful;
    SendingReports.Result = StrReplace(ResultMessage, Chars.LF, " ");
    SendingReports.Write();
    DoMessageBox(ResultMessage,,"E-Mail");
    EndProcedure
    
    
  4. TopicStarter Overlay
    1Cnica
    Offline

    1Cnica Опытный в 1С

    Регистрация:
    13 фев 2009
    Сообщения:
    416
    Симпатии:
    0
    Баллы:
    26
    Bonov, а у вас используется встроенный почтовый клиент? просто у меня встроенный ругается, пишет:

    Код:
    {ОбщийМодуль.УправлениеЭлектроннойПочтой(1038)}: Ошибка при вызове метода контекста (Подключиться): Соединение закрыто сервером.
    
  5. Bonov
    Offline

    Bonov

    Регистрация:
    9 апр 2009
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Да, встроенный. Скорей всего просто нет доступа в локальной сети для отправки сообщений, т.е. на сервере закрыт для вас 25-ый порт. Проконсультируйся с сисадмином ;)
    Либо неправильный сервер исходящей почты... Код однозначно правильный, будут вопросы - помогу.
  6. TopicStarter Overlay
    1Cnica
    Offline

    1Cnica Опытный в 1С

    Регистрация:
    13 фев 2009
    Сообщения:
    416
    Симпатии:
    0
    Баллы:
    26
    у нас админы злые как собаки( все запретили и всем.
    единственная радость в жизни была блин, смотреть тнт.ру в обед, дык и то фильтр поставили, гады :unsure:


    а у тебя адрес SMTP какой? просто я в этих портах-шмортах не разбираюсь и у меня нету таких констант как у тебя :)
  7. Bonov
    Offline

    Bonov

    Регистрация:
    9 апр 2009
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Так убери константы, да пропиши ручками. К примеру, если у тебя есть адрес на Mail.ru, то чтобы отправить с этого адреса нужно:
    SMTP сервер: smtp.mail.ru
    Порт: 25
    Требуется авторизация.
    Отправитель: твой адрес
    Получатель: адрес получателя.
    Имя пользователя и пароль указывать обязательно.
    Подробности тут: http://mail.ru/pages/help/2.html#2333

Поделиться этой страницей