$str = "http://schemas.microsoft.com/cdo/configuration/"
$hMAIL = ObjCreate ("CDO.Message")
With $hMAIL
.From = "[email protected]"
.To = "[email protected]"
.Subject = "Test"
.TextBody = "Test"
.AddAttachment ("C:\boot.ini") ;файл для отправки
EndWith
With $hMAIL.Configuration.Fields
.Item ($str & "sendusing") = 2
.Item ($str & "smtpserver") = "smtp.mail.ru" ;SMTP Server
.Item ($str & "smtpauthenticate") = 1
.Item ($str & "sendusername") = "[email protected]"
.Item ($str & "sendpassword") = "pss" ;Пароль SMTP-сервер
.Item ($str & "smtpserverport") = 2525 ;Порт
.Update
EndWith
$hMAIL.Send
$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)
MsgBox(16, "Няма грешки.", "Писмото е изпратено :-)" & @CRLF)
DllClose ($BlatDLL)
EndFunc
SendMail('Кому@mail.ru', 'От кого@mail.ru', 'Пароль', 'Тема', 'Сообщение')
Func SendMail($To, $sFrom, $sPassw, $sSubject, $sMessage, $attach)
TCPStartup()
$iSocket = TCPConnect(TCPNameToIP('smtp.mail.ru'), 25)
TCPSend($iSocket, 'HELO ' & @LogonDomain & @CRLF)
While 1
$sRecv = TCPRecv($iSocket, 2048)
If $sRecv <> '' Then
If StringRegExp($sRecv, '250 smtp(.*).mail.ru') Then TCPSend($iSocket, 'AUTH LOGIN' & @CRLF)
If StringInStr($sRecv, 'VXNlcm5hbWU6') Then TCPSend($iSocket, _Base64_Encode($sFrom))
If StringInStr($sRecv, 'UGFzc3dvcmQ6') Then TCPSend($iSocket, _Base64_Encode($sPassw))
If StringInStr($sRecv, 'Authentication succeeded') Then
TCPSend($iSocket, 'MAIL FROM: ' & $sFrom & @CRLF)
TCPSend($iSocket, 'RCPT TO: ' & $To & @CRLF)
EndIf
If StringInStr($sRecv, '250 Accepted') Then TCPSend($iSocket, 'DATA' & @CRLF)
If StringInStr($sRecv, '354 Enter message') Then
TCPSend($iSocket, 'From: ' & $sFrom & @CRLF)
TCPSend($iSocket, 'Subject: ' & $sSubject & @CRLF & @CRLF)
TCPSend($iSocket, $sMessage & @CRLF)
TCPSend($iSocket, '.' & @CRLF )
EndIf
If StringInStr($sRecv, '250 OK id=') Then
TCPSend($iSocket, 'QUIT' & @CRLF)
ExitLoop
EndIf
EndIf
Switch StringMid($sRecv, 1, 3)
Case 421 To 554
Return SetError(-1, 0, 0)
EndSwitch
Wend
TCPCloseSocket($iSocket)
TCPShutdown()
Return 1
EndFunc
Func _Base64_Encode($sData, $iFlag = 1)
Local $Ret, $bData, $tData, $tText
$bData = StringToBinary($sData, $iFlag)
$tData = DllStructCreate('byte[' & BinaryLen($bData) & ']')
DllStructSetData($tData, 1, $bData)
$Ret = DllCall('crypt32.dll', 'bool', 'CryptBinaryToStringW', 'ptr', DllStructGetPtr($tData), 'dword', DllStructGetSize($tData), 'dword', 1, 'ptr', 0, 'dword*', 0)
If (@error) Or (Not $Ret[0]) Then
Return SetError(1, 0, '')
EndIf
$tText = DllStructCreate('wchar[' & $Ret[5] & ']')
$Ret = DllCall('crypt32.dll', 'bool', 'CryptBinaryToStringW', 'ptr', DllStructGetPtr($tData), 'dword', DllStructGetSize($tData), 'dword', 1, 'ptr', DllStructGetPtr($tText), 'dword*', $Ret[5])
If (@error) Or (Not $Ret[0]) Then
Return SetError(1, 0, '')
EndIf
Return DllStructGetData($tText, 1)
EndFunc
If StringInStr($sRecv, 'Authentication succeeded') Then
TCPSend($iSocket, 'MAIL FROM: ' & $sFrom & @CRLF)
Sleep(100) ;У меня без него НЕ работало !!!
TCPSend($iSocket, 'RCPT TO: ' & $To & @CRLF)
EndIf
.BodyPart.Charset= "UTF-8" ;кодировка на писмото "windows-1251"
$hMAIL = ObjCreate ("CDO.Message")
$SmtpServer = "10.233.200.110" ; адрес SMTP сервера
$Port = "25" ; Порт SMTP сервера
$FromAddress = @UserName ; адрес отправителя
$ToAddress = "[email protected]" ; адрес назначения
$Subject = """тема письма""" ; тема письма
$Body = """привет""" ; тело письма (сам текст письма)
$charset = "Windows-1251"
$BlatArgs = "-t "&$ToAddress&" -f "&$FromAddress&" -s "&$Subject&" -body "&$Body&" -server "&$SmtpServer&" -portSMTP "&$Port&" -charset "&$charset
_SendMail($BlatArgs)
Func _SendMail($CMDstring)
$BlatDLL = DllOpen ("blat.dll")
Do
$result=DllCall($BlatDLL,"int","Send","str",$CMDstring)
Select
Case $result[0] = 13
MsgBox(16,"Ошибка. Код ошибки " & $result[0], "Не могу открыть временный файл во временной папке")
Case $result[0] = 12
MsgBox(16, "Ошибка. Код ошибки " & $result[0], "Не указаны или не найдены в реестре аргументы -server или -f")
Case $result[0] = 3
MsgBox(16, "Ошибка. Код ошибки " & $result[0], "Не могу прочитать файл с текстом письма или приложенный файл")
Case $result[0] = 2
MsgBox(16, "Ошибка. Код ошибки " & $result[0], "Почтовому серверу не понравился адрес отправителя; или он отказал нам в подключении; или неверный пароль; или не найден файл с текстом письма")
Case $result[0] = 1
MsgBox(16, "Ошибка. Код ошибки " & $result[0], "Не могу открыть SMTP сокет. Проверьте подключение к Интернету; либо неверные аргументы")
Case $result[0] <> 0
MsgBox(16, "Ошибка. Код ошибки " & $result[0], "Неизвестная ошибка")
EndSelect
Until $result[0] = 0
ConsoleWrite ("Письмо отправлено :-)" & @CRLF)
DllClose ($BlatDLL)
EndFunc
@UserName
пробовал, чёт не помогло.а сменить значение $charset не помогает?
спасибо, сейчас попробую.попробуй заюзай Encoding.au3 и перед отправкой кодируй текст...
#include <Encoding.au3>
$BodyU = _Encoding_ANSIToOEM($Body)
$SubjectU= _Encoding_ANSIToOEM($Subject)
$attach
PingG()
Func PingG()
Sleep(1000)
$var = Ping("www.google.com",1000)
If $var Then
SendMeil()
Else
PingG()
EndIf
EndFunc
Func SendMeil()
$str = "http://schemas.microsoft.com/cdo/configuration/"
$hMAIL = ObjCreate ("CDO.Message")
With $hMAIL
.From = "[email protected]" ;Имейла от когото изпращате
.To = "[email protected]" ;Имейла на когото ще изпращате
.Subject = "Относно" ;Относно
;.TextBody = "Текст" ;Текст на имейла ако е в обикновен формат
.BodyPart.Charset= "UTF-8" ;кодировка на писмото "windows-1251"
.HTMLBody = "<b>Текст Текст Текст</b></br>" ;В HTML формат
.AddAttachment ("C:\boot.ini") ;Файл за изпращане
EndWith
With $hMAIL.Configuration.Fields
.Item ($str & "sendusing") = 2
.Item ($str & "smtpserver") = "smtp.abv.bg" ;smtp сървар
.Item ($str & "smtpauthenticate") = 1
.Item ($str & "sendusername") = "[email protected]" ;Имейла на smtp сървара
.Item ($str & "sendpassword") = "pss" ;Парола на smtp сървара
.Item ($str & "smtpusessl") = 1 ;TLS/SSL 0 е спрян
.Item ($str & "smtpserverport") = 465 ;Порт
.Update
EndWith
$hMAIL.Send
EndFunc