Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Как автоматически отправить eMail на заданный адрес (http://forum.oszone.net/showthread.php?t=149079)

Vagac 27-08-2009 17:28 1204741

Как автоматически отправить eMail на заданный адрес
 
Как автоматически отправить eMail на заданный адрес по форуму примеров не нашел подскажите пожалуйста?
Мне нужно чтобы мой рабочий ком автоматически высылал письмо с прикрепленным текстовым файлом на мой адрес, Имею права Администратора на компе с которого необходимо отправлять eMail
на компе не усстановлено почтовых программ можно ли ка то это реализовать.

Belfigor 27-08-2009 17:43 1204748

Можно реализовать через браузер :)

beve 27-08-2009 18:05 1204763

Вот: Ссылка. Смотри там мой пост с кодом. Где написать адрес и т.п. думаю догадаешся.

Vagac 27-08-2009 18:08 1204765

Ни чего не понял

Vagac 27-08-2009 18:27 1204774

Пробовал чтото не выходит с англискм плохо можно по подробней
; Include
;##################################
#Include<file.au3>
;##################################
; Variables
;##################################
$SmtpServer = "Что сдесь SmtpServer на котором зарегестрирована моя почта? " ; address for the smtp-server to use - REQUIRED
$FromName = "Что сдесь" ; name from who the email was sent
$FromAddress = "Что сдесь" ; address from where the mail should come
$ToAddress = "Что сдесь";"()@sms.kyivstar.net" ; destination address of the email - REQUIRED
$Subject = "Проба" ; subject from the email - can be anything you want it to be
$Body = "Привет" ; the messagebody from the mail - can be left blank but then you get a blank mail
$AttachFiles = "Писать Полный путь или нет" ; файлы которые нужно присоединить к письму) the file you want to attach- leave blank if not needed
$CcAddress = "Что сдесь" ; address for cc - leave blank if not needed
$BccAddress = "Что сдесь" ; address for bcc - leave blank if not needed
$Importance = "Normal" ; Send message priority: "High", "Normal", "Low"
$Username = "Что сдесь" ; username for the account used from where the mail gets sent - REQUIRED
$Password = "Пароль на почтовый ящик или нет" ; password for the account used from where the mail gets sent - REQUIRED
$IPPort = 25 ; port used for sending the mail
$ssl = 0 ; enables/disables secure socket layer sending - put to 1 if using httpS
;~ $IPPort=465 ; GMAIL port used for sending the mail
;~ $ssl=1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS

;##################################
; Script
;##################################

beve 27-08-2009 20:23 1204848

Цитата:

Цитата Vagac
можно по подробней »

читать дальше »
Код:

; Include
;##################################
#Include
<file.au3>
;##################################
; Variables
;##################################
$SmtpServer = "smtp.mail.ru" ; адрес smtp-сервера вашей ел. почты
$FromName = "Drug" ; ваше имя
$FromAddress = "нужно заполнить" ; адрес ел. почты отправителя
$ToAddress = "нужно заполнить" ; адрес ел. почты получателя
$Subject = "тема сообщения" ; темя сообщения
$Body = "How are you?" ; текст сообщения
$AttachFiles = "1.bmp" ; файлы которые нужно присоединить к письму, если файлов несколько то следует разделять их точкой с запятой
$CcAddress = "" ; address for cc - leave blank if not needed
$BccAddress = "" ; address for bcc - leave blank if not needed
$Importance = "High" ; Send message priority: "High", "Normal", "Low"
$Username = "нужно заполнить" ; адрес ел. почты отправителя
$Password = "нужно заполнить" ; пароль к ел. почте отправителя
$IPPort = 25 ; port used for sending the mail
$ssl = 0 ; enables/disables secure socket layer sending - put to 1 if using httpS
;~ $IPPort=465 ; GMAIL port used for sending the mail
;~ $ssl=1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS

;##################################
; Script
;##################################
Global $oMyRet[2]
Global $oMyError =
ObjEvent("AutoIt.Error", "MyErrFunc")
$rc =
_INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If @error Then
MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc)
EndIf
;
; The UDF
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
Local $objEmail =
ObjCreate("CDO.Message")
$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($as_Body, "<") And StringInStr($as_Body, ">") Then
$objEmail.HTMLBody = $as_Body
Else
$objEmail.Textbody = $as_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])
ConsoleWrite('@@ Debug(62) : $S_Files2Attach = ' & $S_Files2Attach & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
If FileExists($S_Files2Attach[$x]) Then
$objEmail.AddAttachment ($S_Files2Attach[$x])
Else
ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
SetError(1)
Return 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
If Number($IPPort) = 0 then $IPPort = 25
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
;Authenticated SMTP
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
;Update settings
$objEmail.Configuration.Fields.Update
; Set Email Importance
Switch $s_Importance
Case "High"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"
Case "Normal"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"
Case "Low"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low"
EndSwitch
;$objEmail.Fields.Item ("urn:schemas:mailheader:content-type") = "text/plain; charset=UTF-8"
$objEmail.Fields.Update
; Sent the Message
$objEmail.Send
If @error Then
SetError(2)
Return $oMyRet[1]
EndIf
$objEmail=""
EndFunc
;==>_INetSmtpMailCom
;
;
; Com Error Handler
Func MyErrFunc()
$HexNumber = Hex($oMyError.number, 8)
$oMyRet[0] = $HexNumber
$oMyRet
[1] = StringStripWS($oMyError.description, 3)
ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF)
SetError(1)
; something to check for when this function returns
Return
EndFunc
;==>MyErrFunc


В этом коде есть одно но, если в письме пишеться текст, тот его нужно писать только английскими буквами, тогда дойдет и текст сообщения и прикрепленные файлы.
Если же нужно отправить письмо с текстом на русском языке, без вложений, то нужно перед строкой: ;$objEmail.Fields.Item ("urn:schemas:mailheader:content-type") = "text/plain; charset=UTF-8", которая в скрипте, убрать точку с запятой.

P.S. Советую открыть тебе ящик на mail.ru или ее доменах, тогда будет проще, все что нужно поменять, указано (ибо на gmail немного сложнее).
И еще одно. Путь к вложенным файлам не должен содержать русских букв (или переделуй сам это...)

Iska 27-08-2009 20:51 1204870

Vagac, если Вы верно пишете, что:
Цитата:

на компе не усстановлено почтовых программ…
и нет установленного MS Office (или он 2007 версии), то к коду коллеги beve возможно потребуется установка библиотеки Collaboration Data Objects.

читать дальше »
Если Вас устроит отсылка файла «как есть» (не «прикрепляя»), Вы также можете попробовать функцию «_INetSmtpMail()» (v.3.1.1.97+) из входящей в поставку UDF «Inet.au3»; она реализует непосредственную работу с почтовым сервером по SMTP-протоколу.

abb269 28-08-2009 22:14 1205887

Vagas, посмотрите вот тут
http://www.autoitscript.com/forum/in...pic=23860&st=0
Аутлука не надо, прикрутить к этому автомат на AutoIt-е совсем не трудно.
Нужно минимальное знание английского и зарегистрированный ящик

Iska 28-08-2009 23:08 1205918

abb269, это и есть работа через CDO/Outlook/Exchange Client:
Код:

Local $objEmail = ObjCreate("CDO.Message")
Не имея установленного MS Office, клиента Exchange или хотя бы ручками установленной библиотеки Collaboration Data Objects — письмо таким способом не отправишь.

abb269 30-08-2009 22:16 1207469

Iska, спасибо за информацию.
Я наивно полагал, что нужен только комп.


Время: 23:36.

Время: 23:36.
© OSzone.net 2001-