Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 11:48

Отправка письма со вложенным файлом

Автор Funt432286, 12 мая 2020, 16:07

0 Пользователей и 2 гостей просматривают эту тему.

Funt432286

Цитата: antoneus от 14 мая 2020, 19:46
Платформа 1С какая?

8.3

Там неправильно было написано smtp и адрес почты. Почта для отправки mail
Код получился такой:

// Сформировать почтовый профиль.
// При отправке нет необходимости указывать настройки, связанные с POP сервером.
ИПП = Новый ИнтернетПочтовыйПрофиль;
ИПП.АдресСервераSMTP = "smtp.mail.ru";//для gmail, для других серверов может быть другой 
ИПП.ВремяОжидания = 30;
ИПП.Пользователь = "432286@mail.ru";
ИПП.Пароль = "s*********";
ИПП.ПользовательSMTP = "432286@mail.ru";
ИПП.ПарольSMTP = "s*********";
ИПП.ПортSMTP = 465;//для gmail, для других серверов может быть другой
ИПП.ИспользоватьSSLSMTP = Истина;
ИПП.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;


// Создать сообщение.
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Получатели.Добавить(ЭтаФорма.Адрес);
Сообщение.Отправитель.Адрес = "432286@mail.ru";
Сообщение.Тема = "Срочно в номер!";
Сообщение.Тексты.Добавить("Доброе время суток!");

//Вложение = Новый ДвоичныеДанные(ПутьКФайлуВложения);

//Сообщение.Вложения.Добавить(Вложение,"прикрепленный файл.pdf");

// Подключиться и отправить.
Почта = Новый ИнтернетПочта;
Почта.Подключиться(ИПП);
Почта.Послать(Сообщение);
Почта.Отключиться();



Но выдает ошибку

{ОбщаяФорма.ОтправкаПочты.Форма(31)}: Ошибка при вызове метода контекста (Подключиться)
Почта.Подключиться(ИПП);
по причине:
Can not authenticate to SMTP server: 535 Authentication failed. Please verify your account by going to https://e.mail

antoneus

С логином-паролем что-то. У себя проверил - с mail.ru отправляется, сначала вбил неверный пароль - в точности такая ошибка.

Funt432286

Цитата: antoneus от 14 мая 2020, 20:32
С логином-паролем что-то. У себя проверил - с mail.ru отправляется, сначала вбил неверный пароль - в точности такая ошибка.

Да, была проблема с паролем.

1. Сейчас все отправляет, но появилась другая проблемка с прикрепленным файлом.

{ОбщаяФорма.ОтправкаПочты.Форма(25)}: Ошибка при вызове конструктора (ДвоичныеДанные)
Вложение = Новый ДвоичныеДанные("\Shtamp\Kroy\Sh_150.pdf");
по причине:
Каталог не обнаружен '\Shtamp\Kroy\Sh_150.pdf'


2. И есть еще один вопрос. Данная форма отправки открывается модально из карточки штампа, в карточке есть номер штампа, как сделать так чтобы этот номер (Sh_150) передавался автоматически на эту модальную форму, так как он соответствует имени файлу который должен отправляться.

antoneus

1. Скорее всего, это сетевая папка, к которой есть доступ с сервера, а с клиентского компа нет. Нужно получать файл на сервере и передавать на клиента или перенести весь функционал отправки на сервер.

2. Номер надо передавать в параметрах открываемой формы (это второй параметр процедуры открытия)

ОткрытьФормуМодально(ИмяФормы, Новый Структура("НомерШтампа", НомерШтампа))

Параметры доступны в открываемой форме в обработчике события ПриСозданииНаСервере

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    НомерШтампа = Параметры.НомерШтампа;

Funt432286

Цитата: antoneus от 15 мая 2020, 10:31
1. Скорее всего, это сетевая папка, к которой есть доступ с сервера, а с клиентского компа нет. Нужно получать файл на сервере и передавать на клиента или перенести весь функционал отправки на сервер.

Поставил &НаСервере, вообще перестала отправлять письмо, а &НаКлиенте отправляет


&НаСервере
Процедура ОтправитьПисьмо(Команда)
// Сформировать почтовый профиль.
// При отправке нет необходимости указывать настройки, связанные с POP сервером.
ИПП = Новый ИнтернетПочтовыйПрофиль;
ИПП.АдресСервераSMTP = "smtp.mail.ru";//для gmail, для других серверов может быть другой 
ИПП.ВремяОжидания = 30;
ИПП.Пользователь = "432286@mail.ru";
ИПП.Пароль = "stavropol151283";
ИПП.ПользовательSMTP = "432286@mail.ru";
ИПП.ПарольSMTP = "stavropol151283";
ИПП.ПортSMTP = 465;//для gmail, для других серверов может быть другой
ИПП.ИспользоватьSSLSMTP = Истина;
ИПП.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;


// Создать сообщение.
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Получатели.Добавить(ЭтаФорма.Адрес);
Сообщение.Отправитель.Адрес = "432286@mail.ru";
Сообщение.Тема = "Срочно в номер!";
Сообщение.Тексты.Добавить("Доброе время суток!");

    Вложение = Новый ДвоичныеДанные("Shtamp\Kroy\Sh_150.pdf");

    Сообщение.Вложения.Добавить(Вложение,"прикрепленный файл.pdf");

// Подключиться и отправить.
Почта = Новый ИнтернетПочта;
Почта.Подключиться(ИПП);
Почта.Послать(Сообщение);
Почта.Отключиться();
КонецПроцедуры



antoneus

Потому что сам вызов надо переделать. Кнопка, которая на форме, ищет процедуру с директивой &НаКлиенте и если ее не находит - ничего не делает.

&НаКлиенте
Процедура ОтправитьПисьмо(Команда)
    ОтправитьПисьмоНаСервере();
КонецПроцедуры

&НаСервере
Процедура ОтправитьПисьмоНаСервере()
        // Сформировать почтовый профиль.
    // При отправке нет необходимости указывать настройки, связанные с POP сервером.
    ИПП = Новый ИнтернетПочтовыйПрофиль;
и т.д.


И там слэш первый куда-то делся в имени файла.

Funt432286

все равно не может найти путь к файлу

{ОбщаяФорма.ОтправкаПочты.Форма(29)}: Ошибка при вызове конструктора (ДвоичныеДанные)
Вложение = Новый ДвоичныеДанные("\Shtamp\Kroy\Sh_150.pdf");
по причине:
Каталог не обнаружен '\Shtamp\Kroy\Sh_150.pdf'


может неправильно указан путь. код получился такой:
Вложение = Новый ДвоичныеДанные("\Shtamp\Kroy\Sh_150.pdf");
Сообщение.Вложения.Добавить(Вложение,"прикрепленный файл.pdf");


\Shtamp\Kroy\ - путь где лежит файл
Sh_150.pdf - сам файл который должен прикрепляться

antoneus

Так это сетевая папка или где она находится вообще? В корне диска C на сервере?

Где эти файлы еще фигурируют? В пользовательском режиме 1С вы делаете что-нибудь с ними?

Funt432286

Цитата: antoneus от 15 мая 2020, 12:29
Так это сетевая папка или где она находится вообще? В корне диска C на сервере?

Где эти файлы еще фигурируют? В пользовательском режиме 1С вы делаете что-нибудь с ними?

Папка Stamp лежит в той же папке, что и база. База хранится на диске Е, но так же к базе подключаются другие пользователи по локальной сети.

antoneus

Что ж я сразу-то не спросил - серверный вариант или файловый) Тогда вся эта возня с вызовом серверной процедуры не нужна, путь к папке с базой вытаскивайте из функции СтрокаСоединенияИнформационнойБазы(), к нему прилепляйте путь до файла штампа и получите свое вложение.

&НаКлиенте
Процедура ОтправитьПисьмо(Команда)

    СтрокаСоединенияСБД = СтрокаСоединенияИнформационнойБазы();
    ПутьКБД = Сред(СтрокаСоединенияСБД, 6, СтрДлина(СтрокаСоединенияСБД) - 6);
    ПутьКФайлу = ПутьКБД + "\Shtamp\Kroy\Sh_150.pdf";
    Вложение = Новый ДвоичныеДанные(ПутьКФайлу);

    ИПП = Новый ИнтернетПочтовыйПрофиль;
    ....
    и т.д.
   

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск