Vivek.anand34 Ответов: 1

Как отправить почту за 3 дня с помощью VB.NET


уважаемый друг,
Мне нужно отправлять почту каждые 3 дня с помощью vb.net как отправить. я использую службу windows. у меня есть столбец даты в таблице. мне нужно добавить 3 дня с этой даты..

Что я уже пробовал:

 If (strComplaintDate.ToString() = DateTime.Now.ToString("MM/dd/yyyy h:mm:ss tt")) Then       
                           

     If strCompEmailId <> "" Then                              
   clsInvCmn.StockistSendMail(strCompEmailId, strMessage, "Invoice Complaint", strCCEmailId) 
                                
      End If

 objSBQuery = New StringBuilder
 objSBQuery.Append(" Update DRL_COMPLAINTS_DETAILS_HDR SET DATE_OF_COMPLAINT = DATEADD(day,3,DATE_OF_COMPLAINT) WHERE  COMPLAINTS_DTL_ID='" & strComplaintId & "' ")
clsInvCmn.ExecuteQuery(objSBQuery.ToString)

 End If

ZurdoDev

Напишите для этого службу Windows.

Vivek.anand34

Я обновил вопрос. пожалуйста. видеть его.

ZurdoDev

Посмотрите на функцию dateadd () sql

Vivek.anand34

то,что я пробовал, обновилось...

[no name]

Затем, пожалуйста, обновите свою публикацию, чтобы включить фактический вопрос и описание проблемы с вашим кодом. Мы не умеем читать мысли.

Vivek.anand34

"strComplaintDate" - это дата БД и проверка сегодня. если да, то отправьте письмо и обновите дату 3 дня. свое право.

CHill60

Используйте DATEADD () и параметризованные запросы. Ваш код уязвим для SQL-инъекций.

Vivek.anand34

Хорошо..

Vivek.anand34

Выше код свое право.

CHill60

Нет-приведенный выше код уязвим для SQL-инъекции и использует неявное преобразование даты вместо правильной функции DATEADD

Vivek.anand34

Я добавил функцию DATEADD (day,3,DATE_OF_COMPLAINT)..

CHill60

Значит ли это, что теперь этот вопрос решен?

1 Ответов

Рейтинг:
0

CHill60

Поскольку ОП указал, что" выше кода его право", я опубликую это решение, чтобы закрыть вопрос.

ОП теперь добавил использование DATEADD() вместо того чтобы полагаться на неявное преобразование DATE_OF_COMPLAINT + 3 Однако код все еще не совсем правильный.

Нет смысла создавать StringBuilder, если вы собираетесь использовать конкатенацию строк для его создания. Этот раздел будет выглядеть лучше вот так:

objSBQuery = New StringBuilder("Update DRL_COMPLAINTS_DETAILS_HDR SET DATE_OF_COMPLAINT = DATEADD(day,3,DATE_OF_COMPLAINT) WHERE  COMPLAINTS_DTL_ID='"
objSBQuery.Append(strComplaintId)
objSBQuery.Append("' ")
Однако это все еще оставляет код открытым для атак SQL-инъекций. Вы никогда не должны объединять такие строки для создания SQL-команд.

Она должна выглядеть как:
Dim objSBQuery As String = "Update DRL_COMPLAINTS_DETAILS_HDR SET DATE_OF_COMPLAINT = DATEADD(DD,3,DATE_OF_COMPLAINT) WHERE  COMPLAINTS_DTL_ID=@id"
clsInvCmn.Parameters.AddWithValue("@id", strComplaintId)
clsInvCmn.ExecuteQuery(objSBQuery)
Но для этого вам нужно будет реализовать некоторые средства передачи параметров в clsInvCmn класс, что бы это ни было.


Vivek.anand34

Хорошо... мне нужно отправить почту на основе этой даты..........

CHill60

Я предположил, что это было то, что clsInvCmn.StockistSendMail сделал так как вы уже проверяете If (strComplaintDate.ToString() = DateTime.Now.ToString("MM/dd/yyyy h:mm:ss tt")) Then

Vivek.anand34

Да..... это правильно.....