Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Ошибка в дате (http://forum.oszone.net/showthread.php?t=348129)

Eirstream 03-03-2021 14:01 2951650

Ошибка в дате
 
Заранее прошу прощения, если что-то не так написал, т.к. новенький в этом всем)
Подскажите, такая проблема, мне необходимо отправить архивы и отдельные файлы (без архива) по почте, но возникает проблема с датой.
Присваиваю daydate так, чтобы дата моего файла была на один день меньше, все остальное не менялось.
Указываю пусть к файлу с параметром daydate.
Когда дата файла была, например, 22032021_название файла, то проблем с отправкой не было, сейчас когда дата 02032021_название файла, то возникает ошибка (не найден путь к файлу), предполагаю, что это из-за 0 в начале.
Подскажите, что можно делать, чтобы отправляло с любой датой, которая стоит в названии файла.
Проблемы с 4 и 40 строкой. По всему остальному нет проблем, прописано нормально.
Иероглифы, это русский, комментарии, роли не играет
Код:

Set WshShell = CreateObject("WScript.Shell")
Set FSO = CreateObject ("Scripting.FileSystemObject")

daydate=left(date,2)-1&left(right(Date,7),2)&right(Date,4)  '4 строка

'DT=now
'DateVal=day(DT) & _
'Right("0" & Month(DT),2) & _
'Right("0" & Year(DT),2)

'd=datepart("d",data) & datepart("m",data) & datepart("yyyy",data)

Dim oMSG
Dim oConfig
Dim CFields
Dim strBody

Set oMSG = CreateObject("CDO.Message")


Set oConfig = CreateObject("CDO.Configuration")
Set CFields = oConfig.Fields
Set oMSG.Configuration = oConfig
CFields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
CFields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "post.***.ru"
CFields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
CFields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
CFields("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 0'True
CFields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "***********" 'Login
CFields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "**********" 'pass
CFields("urn:schemas:mailheader:content-language") = "windows-1251"
CFields.Update

oMSG.To = "**********" 'email adress
oMSG.From = "**********"  'emailadreas
oMSG.Subject = "сводка за "+daydate+"" ' òåìà ïèñüìà
oMSG.BodyPart.Charset = "windows-1251" ' êîäèðîâàêà ïèñüìà
oMSG.AddAttachment "C:\Users\Desktop\мой день\"daydate"_сводка.rtf"  ' 40 строка

strBody = "сводка за "+daydate+"." & " C уважением"

oMSG.HTMLBody = strBody 'òåëî ïèñüìà
oMSG.send 'îòïðàâëÿåì
'îáíóëÿåì ïåðåìåííûå
Set CFields = Nothing
Set oConfig = Nothing
Set oMSG = Nothing


MsgBox "Àðõèâû îòïðàâëåíû ïî ýë. ïî÷òå" & "-" & Now(), vbOkonly + vbinformation,"Èíôîðìàöèÿ"


Iska 03-03-2021 14:05 2951651

Eirstream, выложите текст кода (обрамив его тэгом «code»), а не скриншот кода.

Iska 03-03-2021 18:38 2951687

Что Вы хотели получить вот здесь:
Цитата:

Цитата Eirstream
Код:

daydate=left(date,2)-1&left(right(Date,7),2)&right(Date,4) '4 строка
»

Вчерашний день?

Eirstream 03-03-2021 19:50 2951694

Да, я отправляю в 05-00 утра 03.03.2021 года файлы за 02.03.2021 (название файла 02032021_пампам.doc)
Если, например, файл, назывался 26022021_пампам.doc, то все отправлялось, а с 0 впереди (04022021_пампам.doc), не хочет.
Или надо придумать процедуру, чтобы переименовывала файлы в первые числа месяца, либо процедуру, чтобы убирала 0 впереди перед отправкой. Если кто-то поможет, буду рад и благодарен ����

#Iska не пойму как сделать тут ответ на сообщение, цитата не работает)

megaloman 04-03-2021 08:20 2951730

Eirstream, попробуйте
Код:

daydate = Replace(DateAdd("d", -1, Date), ".", "")
MsgBox Date & vbCrLf & daydate & vbCrLf & "C:\Users\Desktop\мой день\" + daydate + "_сводка.rtf"

MsgBox добавил для отладки - удалите при боевом применении
а Ваш код вааще не ясен: в 4 строке что творится 1-го числа, получим 0-день?
ИМХО, 40 строка - вообще неверный синтаксис

Iska 04-03-2021 12:02 2951742

Цитата:

Цитата Eirstream
#Iska не пойму как сделать тут ответ на сообщение, цитата не работает) »

Работает. Просто сначала нужно выделить то, что хотите процитировать.

Eirstream 05-03-2021 13:18 2951812

Цитата:

Цитата megaloman
MsgBox добавил для отладки - удалите при боевом применении
а Ваш код вааще не ясен: в 4 строке что творится 1-го числа, получим 0-день?
ИМХО, 40 строка - вообще неверный синтаксис »

Попробовал вашу часть кода, все также пишет, что "не удается найти указанный файл"
Я же правильно понял, вашу фразу - daydate = Replace(DateAdd("d", -1, Date), ".", "") вместо своей строки с датой?

а Ваш код вааще не ясен: я сам его не понял, взял и готового, который обрезал число до такого 2503_пампам, а мне нужно было 25032021_, я долго пытался и в итоге добавил в конце эту фразу - &right(Date,4).


megaloman 05-03-2021 14:38 2951817

Eirstream, Вы поняли правильно: уберите свою строку, вставьте мою.
Я не вчитываюсь в Ваш код - ставилась задача получить дату вчерашнего дня в формате ддммгггг. Msgbox подтверждает успешность моего подхода?
У меня нет возможности запустить Ваш код, чтобы понять, в чем дело, так как у Вас своя инфраструктура (файлы, почта и т д)
Цитата:

Цитата Eirstream
также пишет, что "не удается найти указанный файл" »

Если дата выдаётся правильно, значит в конечном итоге имя сформировано неверно, или Вы не до конца понимаете, какое имя должно получиться. Выдайте сформированное имя файла в msgbox и проанализируйте, в чем проблама , в чем несоответствие реального имени и сформированного - отладка скрипта требует получения конкретной информации, а не беспредметных стенений.

Eirstream 05-03-2021 15:10 2951819

Цитата:

Цитата megaloman
Eirstream, Вы поняли правильно: уберите свою строку, вставьте мою.
Я не вчитываюсь в Ваш код - ставилась задача получить дату вчерашнего дня в формате ддммгггг. Msgbox подтверждает успешность моего подхода?
»

Вам спасибо огромное, код я пока до конца не понимаю, смотрел по интернету. Если есть Аналогичный, но правильный вариант отправки, то я не против. И всегда рад советам и опыту людей, которые знают больше чем я, подсказывают и помогают. Вам благодарность.

Ставилась задача получить дату вчерашнего дня в формате ддммгггг, - все верно.
Я сначала, кое что не проверил, потом все подправил и вот, что в итоге.
Ваш Msgbox пишет (ваш текст в сообщении не менял):



Файл находится D:\Downloads
Имя файла: 04032021_Сводка.rtf
Сегодня 05032021 (05.03.2021)

Сейчас мой код:

Код:

Set WshShell = CreateObject("WScript.Shell")
Set FSO = CreateObject ("Scripting.FileSystemObject")

daydate = Replace(DateAdd("d", -1, Date), ".", "")
MsgBox Date & vbCrLf & daydate & vbCrLf & "C:\Users\Desktop\мой день\" + daydate + "_сводка.rtf"

Dim oMSG
Dim oConfig
Dim CFields
Dim strBody

'создаем объект Message это наше письмо
Set oMSG = CreateObject("CDO.Message")

'создаем объект Configuration это настройки соединения
Set oConfig = CreateObject("CDO.Configuration")
Set CFields = oConfig.Fields
Set oMSG.Configuration = oConfig
CFields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
CFields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.yandex.ru" 'адрес SMTP сервера
CFields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
CFields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
CFields("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
CFields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "МОЯ ПОЧТА@yandex.ru" 'Login
CFields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "ПАРОЛЬ" 'пароль
CFields("urn:schemas:mailheader:content-language") = "windows-1251"
CFields.Update

oMSG.To = "МОЙ АДРЕС@yandex.ru"'адреса получателей
oMSG.From = "МОЙ АДРЕС@yandex.ru"  'адрес отправителя
oMSG.Subject = "Сводка за "+daydate+"" ' тема письма
oMSG.AddAttachment "D:\Downloads\"+daydate+"_Сводка.rtf" 'путь к вложенному файлу
oMSG.BodyPart.Charset = "windows-1251" ' кодировка письма

'формируем HTML текст который будет телом письма
strBody = "Сводка за "+daydate+"." &  " C уважением ПАМ ПАМ"

oMSG.HTMLBody = strBody 'тело письма
oMSG.send 'отправляем                        'СЕЙЧАС ПРОБЛЕМА В ЭТОЙ СТРОКЕ!!!!!!!!!!!!

'обнуляем переменные
Set CFields = Nothing
Set oConfig = Nothing
Set oMSG = Nothing

MsgBox "Архивы и файлы отправлены по эл. почте " & " - " & Now(), vbOkonly + vbinformation,"Информация"

По идеи Ваш код работает, теперь проблема в чем-то другом, буду смотреть

СЕЙЧАС ПРОБЛЕМА В 39-ой СТРОКЕ - oMSG.send 'отправляем .

Выдает такую ошибку


Eirstream 06-03-2021 12:43 2951886

Iska, приветствую, видел, что когда-то вы уже отправляли или делали код по отправки по e-mail, может подскажите альтернативу моему коду? заранее благодарю)
Сейчас так и не понял, что за ошибка, уже отправляю сообщения вообще без файлов, что-то не дает этот send. ))

Iska 07-03-2021 06:30 2951941

Eirstream, Вы настроили свой почтовый ящик на приём сообщений доступ от неавторизованных клиентов?
Скрытый текст

Eirstream 07-03-2021 10:04 2951951

Iska, megaloman спасибо огромное за помощь, все получилось
Цитата:

Цитата megaloman
Eirstream, попробуйте
Код:
daydate = Replace(DateAdd("d", -1, Date), ".", "")
MsgBox Date & vbCrLf & daydate & vbCrLf & "C:\Users\Desktop\мой день\" + daydate +"_сводка.rtf" »

Это код помог, благодарю!

А по строке oMSG.send, скорее всего проблема была с компом, или что-то мешало отправить, либо пакетов не было или обновлений. Последний мой код верный, все работает.
Цитата:

Цитата Iska
Eirstream, Вы настроили свой почтовый ящик на приём сообщений от неавторизованных клиентов? »

Да, настроил. Все работает. Еще раз спасибо. [РЕШЕНО]


Время: 19:09.

Время: 19:09.
© OSzone.net 2001-