PDA

Показать полную графическую версию : [решено] Ошибка в дате


Eirstream
03-03-2021, 14:01
Заранее прошу прощения, если что-то не так написал, т.к. новенький в этом всем)
Подскажите, такая проблема, мне необходимо отправить архивы и отдельные файлы (без архива) по почте, но возникает проблема с датой.
Присваиваю 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
Eirstream, выложите текст кода (обрамив его тэгом «code»), а не скриншот кода.

Iska
03-03-2021, 18:38
Что Вы хотели получить вот здесь:
daydate=left(date,2)-1&left(right(Date,7),2)&right(Date,4) '4 строка »
Вчерашний день?

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

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

megaloman
04-03-2021, 08:20
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
#Iska не пойму как сделать тут ответ на сообщение, цитата не работает) »
Работает. Просто сначала нужно выделить то, что хотите процитировать.

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

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

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

https://c.radikal.ru/c05/2103/e3/79f86ef52f09.jpg

megaloman
05-03-2021, 14:38
Eirstream, Вы поняли правильно: уберите свою строку, вставьте мою.
Я не вчитываюсь в Ваш код - ставилась задача получить дату вчерашнего дня в формате ддммгггг. Msgbox подтверждает успешность моего подхода?
У меня нет возможности запустить Ваш код, чтобы понять, в чем дело, так как у Вас своя инфраструктура (файлы, почта и т д)
также пишет, что "не удается найти указанный файл" »
Если дата выдаётся правильно, значит в конечном итоге имя сформировано неверно, или Вы не до конца понимаете, какое имя должно получиться. Выдайте сформированное имя файла в msgbox и проанализируйте, в чем проблама , в чем несоответствие реального имени и сформированного - отладка скрипта требует получения конкретной информации, а не беспредметных стенений.

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

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

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

https://b.radikal.ru/b22/2103/d0/5c2efeb25ffc.jpg

Файл находится 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 'отправляем .

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

https://c.radikal.ru/c12/2103/7b/1de73f026990.jpg

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

Iska
07-03-2021, 06:30
Eirstream, Вы настроили свой почтовый ящик на приём сообщений доступ от неавторизованных клиентов?
https://i.imgur.com/yiyjeJX.png

Eirstream
07-03-2021, 10:04
Iska, megaloman спасибо огромное за помощь, все получилось Eirstream, попробуйте
Код:
daydate = Replace(DateAdd("d", -1, Date), ".", "")
MsgBox Date & vbCrLf & daydate & vbCrLf & "C:\Users\Desktop\мой день\" + daydate +"_сводка.rtf" »

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

А по строке oMSG.send, скорее всего проблема была с компом, или что-то мешало отправить, либо пакетов не было или обновлений. Последний мой код верный, все работает.
Eirstream, Вы настроили свой почтовый ящик на приём сообщений от неавторизованных клиентов? »
Да, настроил. Все работает. Еще раз спасибо. [РЕШЕНО]




© OSzone.net 2001-2012