Как задать время отправки электронного письма | |
---|---|
Аркадий Автор Сообщений: 252 Откуда: Санкт-Петербург Дата регистрации: 30.11.2005 |
Добрый день!
Подскажите, пожалуйста, как указать время отправки письма при использовании CDO. Что-то не нашёл ни одного примера. |
Re: Как задать время отправки электронного письма | |
---|---|
PaulWist Сообщений: 14727 Дата регистрации: 01.04.2004 |
Что надо? Отправить в конкретные 14 час 10 мин??
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Как задать время отправки электронного письма | |
---|---|
Аркадий Автор Сообщений: 252 Откуда: Санкт-Петербург Дата регистрации: 30.11.2005 |
Да.
|
Re: Как задать время отправки электронного письма | |
---|---|
PaulWist Сообщений: 14727 Дата регистрации: 01.04.2004 |
CDO не умеет, вешай на планировщик.
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Как задать время отправки электронного письма | |
---|---|
Аркадий Автор Сообщений: 252 Откуда: Санкт-Петербург Дата регистрации: 30.11.2005 |
Я же сам формирую письма, и хотелось бы указывать время отправки. Иначе получается, они отправятся сразу.
|
Re: Как задать время отправки электронного письма | |
---|---|
PaulWist Сообщений: 14727 Дата регистрации: 01.04.2004 |
Ну сформируй письма, сложи в таблицу.
На шедулер повесь прогу, которая будет просматривать табличку с письмами и отправлять их. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Как задать время отправки электронного письма | |
---|---|
Аркадий Автор Сообщений: 252 Откуда: Санкт-Петербург Дата регистрации: 30.11.2005 |
Нет уж. Возможно, надо формировать письма с помощью другого объекта или самого Outlook?
|
Re: Как задать время отправки электронного письма | |
---|---|
ABB Сообщений: 159 Откуда: Санкт-Петербург Дата регистрации: 21.10.2006 |
А если так
Для указания времени отправки письма при использовании CDO (Collaboration Data Objects) в Visual FoxPro, вы можете использовать свойство "Date" объекта "Configuration.Fields" и установить нужное значение времени. Ниже приведен пример кода: lcServer = "smtp.example.com" && адрес сервера SMTP lcRecipient = "example@example.com" && получатель lcSender = "sender@example.com" && отправитель lcSubject = "Тестовое письмо" && тема письма lcBody = "Привет! Это тестовое письмо." && текст письма loCDO = CreateObject("CDO.Message") WITH loCDO.Configuration.Fields .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 && использовать SMTP для отправки .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = lcServer .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 && порт SMTP сервера .Update() ENDWITH WITH loCDO .Subject = lcSubject .TextBody = lcBody .To = lcRecipient .From = lcSender && Установка времени отправки lnHour = 10 lnMin = 30 lnSec = 0 .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/Date") = DateTime(lnYear, lnMonth, lnDay, lnHour, lnMin, lnSec) .Send() ENDWITH RELEASE loCDO В приведенном примере используется свойство "Date" объекта "Configuration.Fields" для установки времени отправки письма. Вы можете изменить значения переменных "lnHour", "lnMin" и "lnSec" для указания нужного времени отправки. Но это ChatGPT |
Re: Как задать время отправки электронного письма | |
---|---|
sphinx Сообщений: 31719 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
+1 Если время в системе совпало с ожидаемым - шлем, иначе сидим, боимся. ------------------ "Veni, vidi, vici!"(с) |
Re: Как задать время отправки электронного письма | |
---|---|
Аркадий Автор Сообщений: 252 Откуда: Санкт-Петербург Дата регистрации: 30.11.2005 |
Увы,
Цитата:не действует. Но ещё более интересно, как в тело письма поместить красиво оформленный, например, в Word макет. Сами приложения, само собой, позволяют копировать внутрь, что угодно, но программно методов типа Paste, как в Word и Excel, в описании тоже не существует. Если сохранить файл, как HTML, к несчастью, в письмо не попадают картинки. Исправлено 2 раз(а). Последнее : Аркадий, 15.09.23 17:16 |
Re: Как задать время отправки электронного письма | |
---|---|
ABB Сообщений: 159 Откуда: Санкт-Петербург Дата регистрации: 21.10.2006 |
Оператор .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/Date") позволяет установить значение для свойства Date в объекте Configuration. Однако, передаваемое значение должно быть объектом DateTime, чтобы это работало.
Проверьте, правильно ли заданы значения lnYear, lnMonth, lnDay, lnHour, lnMin и lnSec, и что они являются правильными значениями для даты и времени. Возможно, вам также потребуется настроить другие свойства в объекте Configuration, чтобы успешно установить значение для свойства Date. Если проблема все еще не решена, пожалуйста, уточните, где именно возникает проблема, и предоставьте больше деталей или кода для того, чтобы мы могли лучше помочь вам. ChatGPT |
Re: Как задать время отправки электронного письма | |
---|---|
lemenev Сообщений: 197 Дата регистрации: 23.06.2022 |
Письмо отправляется в текущий, а не заданный момент. |
Re: Как задать время отправки электронного письма | |
---|---|
ABB Сообщений: 159 Откуда: Санкт-Петербург Дата регистрации: 21.10.2006 |
В Visual FoxPro вы можете использовать объекты CDO (Collaboration Data Objects) для отправки электронной почты с установкой отложенного времени.
Вот пример кода на Visual FoxPro, использующий CDO для установки отложенного времени отправки письма: lnYear = 2023 lnMonth = 9 lnDay = 17 lnHour = 10 lnMin = 30 lnSec = 0 loCdoConfig = CREATEOBJECT("CDO.Configuration") loCdoFields = loCdoConfig.Fields WITH loCdoFields .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 && Отправить через SMTP .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "SMTP сервер" && Замените на ваш SMTP сервер .Update() ENDWITH loCdoMessage = CREATEOBJECT("CDO.Message") WITH loCdoMessage .Configuration = loCdoConfig .Subject = "Тема письма" .HTMLBody = "Текст письма" .To = "example@example.com" .Fields.Item("urn:schemas:mailheader:date") = TRANSFORM(DATETIME(lnYear, lnMonth, lnDay, lnHour, lnMin, lnSec), "YYYY-MM-DD HH:MI:SS") .Fields.Update() .Send() ENDWITH RELEASE loCdoMessage RELEASE loCdoFields RELEASE loCdoConfig В этом примере вы должны заменить "SMTP сервер" на реальный SMTP-сервер, который вы хотите использовать. Также замените "Тема письма" и "example@example.com" на реальные данные вашего письма. Убедитесь, что на вашем компьютере установлен и настроен Microsoft CDO для отправки электронной почты через SMTP. Ваш ChatGPT |
Re: Как задать время отправки электронного письма | |
---|---|
Аркадий Автор Сообщений: 252 Откуда: Санкт-Петербург Дата регистрации: 30.11.2005 |
К сожалению, всё равно отправляется сразу. Обычно подобные программы требуют ещё указания часового пояса в дате, не надо ли и тут такого?
Можно ли вообще где-то найти полное описание объекта "CDO.Message"? |
Re: Как задать время отправки электронного письма | |
---|---|
ABB Сообщений: 159 Откуда: Санкт-Петербург Дата регистрации: 21.10.2006 |
После некоторого общения получил следующий ответ:
В объекте "CDO.Message" время отправки почтового сообщения не устанавливается явным образом. Вместо этого время отправки соответствует моменту, когда вызывается метод "Send" для отправки письма. Когда вы устанавливаете все необходимые свойства сообщения, такие как адрес отправителя, получателя, тему, содержание и другие, и вызываете метод "Send", письмо отправляется немедленно. Однако можно использовать дополнительные функции, такие как задержка отправки или планирование отправки, используя внешние инструменты, расписания задач или программирование. Например, внутри вашего приложения вы можете использовать таймеры или задачи планировщика, чтобы отправлять почту по заданному расписанию или с задержкой. Объект "CDO.Message" сам по себе не предоставляет возможность задавать специфическое время отправки письма, и время отправки будет определяться моментом вызова метода "Send". Увы |
Re: Как задать время отправки электронного письма | |
---|---|
Аркадий Автор Сообщений: 252 Откуда: Санкт-Петербург Дата регистрации: 30.11.2005 |
Может быть, известно, каким свойством Outlook установить время отправки, если пользоваться непосредственно им? Тоже не нашёл примеров использования и описания всех свойств.
Или возможно ли в CDO.Message так составить HTMLBody, чтобы картинки (например, логотип организации) вставились в тело письма? |
Re: Как задать время отправки электронного письма | |
---|---|
ABB Сообщений: 159 Откуда: Санкт-Петербург Дата регистрации: 21.10.2006 |
Для установки времени отправки письма в Visual FoxPro, вы можете использовать методы и свойства COM-объекта Outlook.Application.
Вот пример кода на Visual FoxPro, который устанавливает отложенное время отправки для письма: lnYear = 2023 lnMonth = 9 lnDay = 17 lnHour = 10 lnMin = 30 lnSec = 0 loOutlook = CREATEOBJECT("Outlook.Application") loMail = loOutlook.CreateItem(0) WITH loMail .Subject = "Тема письма" .Body = "Текст письма" .To = "example@example.com" .DeferredDeliveryTime = DATETIME(lnYear, lnMonth, lnDay, lnHour, lnMin, lnSec) .Send() ENDWITH RELEASE loMail RELEASE loOutlook Обратите внимание, что код использует функцию DATETIME для создания объекта DateTime, необходимого для установки времени отправки. Вам также потребуется заменить "Тема письма", "Текст письма" и "example@example.com" на реальные данные вашего письма. Убедитесь, что у вас установлена и настроена Outlook на вашем компьютере для правильного исполнения кода. |
Re: Как задать время отправки электронного письма | |
---|---|
Аркадий Автор Сообщений: 252 Откуда: Санкт-Петербург Дата регистрации: 30.11.2005 |
Спасибо, так работает, и даже удаётся подменить ссылку на файл с картинкой в тексте письма на тег, включающий сам преобразованный в строку файл картинки, типа
<img width="307" height="275" src="data:image/png;base64,iVBORw0KGgoAAAAN ... SsAAAAASUVORK5CYII="/>, если сохранить WORD как HTML. В этом случае картинка отображается в теле письма. Хотелось бы ещё попробовать формат RTFBody. Возможно, с ним изображения в письме будут передаваться естественным образом. Однако при отправке RTF-файла получается ошибка то 0х8002000b invalid index, то 0х80010105 the server threw an exception. В примерах RTF-файл как-то конвертируется, но мне не удаётся. Это примеры Microsoft Цитата: Цитата: |
Re: Как задать время отправки электронного письма | |
---|---|
ABB Сообщений: 159 Откуда: Санкт-Петербург Дата регистрации: 21.10.2006 |
Я выступал в этом случае как медиум между вами и ChatGPT
Если у вас есть желание пообщаться с ним напрямую - бот в телеграме t.me |
Re: Как задать время отправки электронного письма | |
---|---|
andrewk Сообщений: 221 Откуда: Красноярск Дата регистрации: 15.05.2005 |
А возможно ли? Ход мысли такой. CDO – это не самостоятельный отдельно работающий сервис, а объект, который создаётся нашей прогой и перестаёт существовать, а значит и работать, как только сделаем release. Поэтому отложить на потом свою работу (отправку письма) не может – он же потом существовать не будет. По .Send он обращается к smtp-серверу, шлёт ему команды и данные для отправки письма, результат возвращает нам. Тут же исчезает (по release). Другое дело, если бы smtp-сервер, через который шлём, позволял каким-то образом указать ему, что он должен отправить (вернее, начать пытаться отправить) не сразу, а с задержкой. Но есть ли это в smtp-протоколе, не знаю, в RFC 5321 сходу не увидел, может не там смотрел. Ну да, в веб-интерфейсе всяких Яндекс-почт при написании письма есть такой параметр, но это ж совсем другое. ---- Вопросы на тему имейл. 1. Можно ли как-то сделать, чтобы отправленное из программы письмо оставалось на сервере в папке Отправленные? При отправке через CDO это не происходит (пробовал GMail, Яндекс Почта, Mail.ru). Или для этого нужен какой-нибудь imap? 2. Поделитесь, пожалуйста, готовым классом или заготовкой для удобного ввода email-адресов. Предполагаю, что там 2 textboxa. Один для username – с проверкой допустимых символов. Другой для домена – с включенным AutoComplete (чтоб всякие "mail.ru" каждый раз не набирать) и тоже проверкой. Может, какие-то более интересные варианты есть. Просто неохота с нуля велосипед рисовать)) |
© 2000-2024 Fox Club  |