Что нового

Как сделать функцию _INetSmtpMail работоспособной

Alexander

Новичок
Сообщения
105
Репутация
2
В этой функции нет места для ввода пароля и прикрепленных файлов. Как это реализовать? Короче как сделать, чтоб она работала?
PS. Отправку с помощью blat.dll и CDO.Message не предлагать. Я это знаю. Я хочу чтоб отправка ни от чего не зависела :smile:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Alexander
ты привел два самых распространенных метода, как ненужные. ковырять протокол самому, чтобы заново изобрести велосипед? CDO.Message есть практически на всех машинах с XP, так как его использует Outlook Express, который так же вшит во все системы. так что его использование крайне рекомендуется. а как именно, поищи по форуму парочка тем точно была. люди даже целые мини-клиенты почтовые изобретали.
 
Автор
A

Alexander

Новичок
Сообщения
105
Репутация
2
Kaster
CDO.Message есть практически на всех машинах с XP
1. А как быть с Vista и Windows 7? Он туда входит?
2. А если, допустим, нет CDO.Message. То можно его как-то установить отдельно? Это требует установки офиса...
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Alexander
точно не скажу. надо проверять. что сделать довольно легко. но только не мне, ибо виндой не обладаю.
даже если нет, можно таскать с собой данную либу, скачать можно с сайта Micrisoft. CDO MAPI
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Код:
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $s_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
	Local $objEmail = ObjCreate("CDO.Message")
	If Not IsObj($objEmail) Then Return SetError(1, 0, 0)
	
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    
	Local $i_Error = 0
    Local $i_Error_desciption = ""
    
	If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    
	$objEmail.Subject = $s_Subject
   
	If StringInStr($s_Body, "<") And StringInStr($s_Body, ">") Then
        $objEmail.HTMLBody = $s_Body
    Else
        $objEmail.Textbody = $s_Body & @CRLF
    EndIf
    
	If $s_AttachFiles <> "" Then
        Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
        For $x = 1 To $S_Files2Attach[0]
            $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
            If FileExists($S_Files2Attach[$x]) Then
                $objEmail.AddAttachment($S_Files2Attach[$x])
            Else
                $i_Error_desciption = $i_Error_desciption & @LF & 'File not found to attach: ' & $S_Files2Attach[$x]
                Return SetError(1, 0, 0)
            EndIf
        Next
    EndIf
    
	$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
   
   If $s_Username <> "" Then
        $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
        $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
    EndIf
   
	If $ssl Then
        $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    EndIf
   
	$objEmail.Configuration.Fields.Update
    $objEmail.Send
    
	If @error Then Return SetError(2, 0, '')
EndFunc


Прикрепил небольшую програмку для отправки почты, использующую данную функцию.
 
Автор
A

Alexander

Новичок
Сообщения
105
Репутация
2
Kaster сказал(а):
Alexander
точно не скажу. надо проверять. что сделать довольно легко. но только не мне, ибо виндой не обладаю.
даже если нет, можно таскать с собой данную либу, скачать можно с сайта Micrisoft. CDO MAPI

1. Я так понимаю CDO.Message находится в Outlook. Если нет Outlook (CDO.Message), то можно установить CDO.Message этой библиотекой? (Потому, что у меня установлен Outlook и при установки этой библиотеки оно мне выдало ошибку, что он установлен).
2. Как можно узнать есть ли CDO.Message на компьютере или нет?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Alexander [?]
Я так понимаю CDO.Message находится в Outlook
нет. это разные продукты. но один использует второй
Как можно узнать есть ли CDO.Message на компьютере или нет?
лучший способ пройтись по нескольким первым строчкам кода.
Код:
$objEmail = ObjCreate("CDO.Message")
If Not IsObj($objEmail) Then MsgBox(0, '', 'Not installed')
 

xlgrgrc

Знающий
Сообщения
91
Репутация
7
Кто может подсказать по этой проге?



Что тут ввожу не правильно? :wacko:
 

rusreg79

Продвинутый
Сообщения
159
Репутация
57
Попробуй порт 587 и отключить ssl
 
Верх