Что нового

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

Isn

Новичок
Сообщения
119
Репутация
3
Доброго времени суток, и снова я со своими вопросами, ну что ж поделаешь, "не могу я без этого форума жить")))

Нашел на просторах форума следующий скрипт:
Код:
$SmtpServer = "smtp.mail.ru"    ; адрес SMTP сервера
$Port = "2525"                  ; Порт SMTP сервера
$FromAddress = "[email protected]"   ; адрес отправителя
$ToAddress = "[email protected]"     ; адрес назначения
$Subject = """тема письма"""    ; тема письма
$Body = """Tekst v imeila"""    ; тело письма (сам текст письма)
$AttachFiles = "C:\boot.ini"    ; прикреплённые файлы к письму
$Username = "[email protected]"      ; имя пользователя аккаунта, с которого отправляется
$Password = "pss"               ; Пароль

$BlatArgs = "-t "&$ToAddress&" -f "&$FromAddress&" -s "&$Subject&" -body "&$Body&" -server "&$SmtpServer&" -u "&$Username&" -pw "&$Password&" -attach "&$AttachFiles&" -portSMTP "&$Port

_SendMail($BlatArgs)

Func _SendMail($CMDstring)
    $BlatDLL = DllOpen ("blat.dll")
    $result=DllCall($BlatDLL,"int","Send","str",$CMDstring)
    DllClose ($BlatDLL)
EndFunc

У меня возник вопрос, можно ли как то проверить отправлено письмо или нет?
Допустим если письмо отправлено то переменная равна 1, если нет то
0.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
А если посмотреть в сторону объекта CDO.Message или попробовать отправить с помощью TCP

Или

Код:
Func _SendMail($CMDstring)
    $BlatDLL = DllOpen ("blat.dll")
    $result=DllCall($BlatDLL,"int","Send","str",$CMDstring)
    If @error Or Not $result[0] Then
        Return SetError(@error, @extended, 0)
    EndIf
    DllClose ($BlatDLL)
    Return 1
EndFunc


Я не знаю что возвращает Dll в случае ошибки, но догадываюсь что либо 0 либо ничего, так что за приведённый выше код не ручаюсь.
 
Автор
Isn

Isn

Новичок
Сообщения
119
Репутация
3
Код работает. Примного благодарен Viktor1703
Немного переписал код

Сообщение отправлено:
Код:
If @error Or Not $result[0] Then
	MsgBox(64, "", "Сообщение отправлено")
        Return SetError(@error, @extended, 0)
 EndIf

Сообщение не отправлено:
Код:
If $result[0] Then
	MsgBox(16, "Ошибка!", "Сообщение не отправлено.")
EndIf

Так и не понял почему в первом варианте если error или $result[0] тогда
возвращает одно, а во втором наоборот, но меня устраивает главное что код работает.
 

fuflik

Новичок
Сообщения
5
Репутация
0
У меня тут сразу идея родилась:smile: есть контроль доступа и видеокамерой у входа в здание, так вот не просто отправлять письмо а сделать скрин входящего и послать по почте...эот возможно? Спасибо
 
Верх