Что нового

[Сеть, интернет] отправка файла через mail.ru

Kadein

Новичок
Сообщения
2
Репутация
0
Здравствуйте форумчане. перекопал весь форум, нашел кучу кода, но не один не работает через mail.ru. постоянная ошибка (скрин во вложении)

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

$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

второй

Код:
_send("Premium", "Fake", "C:\test.txt")
Func _send($Body, $Subject, $Attachment)
$FromAddress = '[email protected]
$ToAddress = '[email protected]'
$SMTPServer = 'smtp.mail.ru'
$Username = '[email protected]'
$Password = "zxcvbnm"
$Port = '2525'

$str = "http://schemas.microsoft.com/cdo/configuration/"
$hMAIL = ObjCreate ("CDO.Message")
    With $hMAIL
        .From = $FromAddress
        .To = $ToAddress
        .Subject = $Subject
        .TextBody = $Body
        .AddAttachment ($Attachment)
    EndWith
    With $hMAIL.Configuration.Fields
        .Item ($str & "sendusing") = 2
        .Item ($str & "smtpserver") = $SMTPServer
        .Item ($str & "smtpauthenticate") = 1
        .Item ($str & "sendusername") = $Username
        .Item ($str & "sendpassword") = $Password
        .Item ($str & "smtpserverport") = $Port
        .Update
    EndWith
$hMAIL.Send
EndFunc

как решить проблему? в чем ошибка?
 
Автор
K

Kadein

Новичок
Сообщения
2
Репутация
0
пробовал, результата не дало
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Администратор.
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Kadein
Вот рабочий пример:
Код:
$str = "http://schemas.microsoft.com/cdo/configuration/"
$hMAIL = ObjCreate ("CDO.Message")
    With $hMAIL
        .From = 'от_кого@mail.ru';поставить свое
        .To = 'Кому@mail.ru';поставить свое
        .Subject = 'Тема сообщения'
        .TextBody = 'Тело сообщения'
        .AddAttachment ('C:\test.txt')
    EndWith
    With $hMAIL.Configuration.Fields
        .Item ($str & "sendusing") = 2
        .Item ($str & "smtpserver") = 'smtp.mail.ru'
        .Item ($str & "smtpauthenticate") = 1
        .Item ($str & "sendusername") = 'от_кого@mail.ru';поставить свое
        .Item ($str & "sendpassword") = 'пароль';поставить свое
        .Item ($str & "smtpserverport") = '2525'
        .Update
    EndWith
$hMAIL.Send

Но! Обрати внимание на
Код:
.AddAttachment ('C:\test.txt')

Т.е. надо явно прописывать путь к файлу, а не подставлять значение
переменной.
Конструкция
Код:
.AddAttachment ($File)

выдаст подобную ошибку.
Почему так, так и не разобрался. Может кто из форумчан что-то посоветует.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
Global $iError = False, $oEvent = ObjEvent('AutoIt.Error', '__com_getError')
 
MsgBox(0, '', __com_SendMail('кому@mail.ru', 'Имя', 'от-кого@mail.ru', 'пароль', 'заголовок', 'сообщение', 'файл'))

Func __com_SendMail($sToAddress, $sName, $sFromAddress, $sPassword, $sSubject = '', $sBody = '', $sAttach = '', $sServer = 'smtp.mail.ru', $iPort = 25, $iSSL = 0)
    Local $oEmail = ObjCreate('CDO.Message')
    If (Not IsObj($oEmail)) Then 
		Return SetError(1, 0, 0)
    EndIf
    $oEmail.From = '"' & $sName & '" <' & $sFromAddress & '>'
    $oEmail.To = $sToAddress
    $oEmail.Subject = $sSubject
	$oEmail.TextBody = $sBody & @CRLF
    If ($sAttach <> '') Then
		If FileExists($sAttach) Then
			$oEmail.AddAttachment($sAttach)
		Else
			Return SetError(2, 0, 0)
		EndIf
    EndIf
    $oEmail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/sendusing') = 2
    $oEmail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/smtpserver') = $sServer
    $oEmail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/smtpserverport') = $iPort
	$oEmail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/smtpauthenticate') = 1
	$oEmail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/sendusername') = $sFromAddress
	$oEmail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/sendpassword') = $sPassword
	$oEmail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/smtpusessl') = $iSSL
    $oEmail.Configuration.Fields.Update
    $oEmail.Send
    If $iError Then 
		$iError = 0
		Return SetError(3, 0, 0)
	EndIf
    Return 1	
EndFunc
 
Func __com_getError()
	$iError = $oEvent.Number
EndFunc
 
Верх