Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Послать письмо с помощью Microsoft Office Outlook

Ответить
Настройки темы
Послать письмо с помощью Microsoft Office Outlook

Новый участник


Сообщения: 23
Благодарности: 0

Профиль | Отправить PM | Цитировать


Подскажите, пожалуйста, как создать почтовое сообщение (без вложений) при помощи программы Microsoft Office Outlook.
Задача стоит такая - в конце месяца разослать участникам проекта сообщения с напоминанием заполнить необходимые документы.
Спасибо.

Отправлено: 11:34, 17-11-2009

 

Аватара для timsky

Новый участник


Сообщения: 46
Благодарности: 10

Профиль | Отправить PM | Цитировать


А почему напрямую слать нельзя?

Отправлено: 16:35, 17-11-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Посмотри, сдесь есть пример. Также сдесь есть библиотека для работы с программой OutlookExpress. (Может лучше через эту программу отослать). И еще, сдесь есть обсуждение и пример, как напрямую отослать email. Ну и напоследок, еще можно отослать email с помощью функции _INetMail(), описание которой есть в справке (Ета функция отправляет email из почтовой програмы, что по умолчанию).

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Последний раз редактировалось beve, 17-11-2009 в 17:03.


Отправлено: 16:47, 17-11-2009 | #3


Новый участник


Сообщения: 23
Благодарности: 0

Профиль | Отправить PM | Цитировать


да вроде _INetMail() работает, но сообщения на русском приходят в виде

ïÞÅÎØ âù-ÙÓÔÒÁÑ ÂÕÒÁÑ ÌÉÓÁ ÐÒÙÇÁÅÔ ÞÅÒÅÚ ÐÏÄßÑÞÅÇÏ îéëïîá á ×ÏÔ ÉÓÈÏÄÎÉË

это уже вопрос 2

Отправлено: 17:22, 17-11-2009 | #4


Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Попробуйте лучще напрямую отправить:
Код: Выделить весь код
#Include<file.au3>


;------------------обязательные поля для заполнения-------------------------
$SmtpServer = "smtp.mail.ru" ; адресс smtp сервера (тут для mail.ru)
$Username = "Test@list.ru" ; ; название твоего почтового ящика (username for the account used from where the mail gets sent - REQUIRED)
$Password = "Test" ;Пароль к твоей почте (password for the account used from where the mail gets sent - REQUIRED)

$FromName = "Test@list.ru" ; Твое имя (имя отправителя))
$FromAddress = "Test@list.ru" ; название твоего почтового ящика
$ToAddress = "kontakt@list.ru" ; Почта того кому шлется письмо
$Subject = "Привет" ; тема сообщения
$Body = "Здравствуйте, как жизнь!" ; Текст сообщения
;---------------------------------------------------------------------------------------


$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 = "High" ; Send message priority: "High", "Normal", "Low"

$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

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Отправлено: 17:54, 17-11-2009 | #5


Новый участник


Сообщения: 23
Благодарности: 0

Профиль | Отправить PM | Цитировать


спасибо за скрипт. но что-то у меня не склеилось - он не работает.
мне все же не аттач нужен а именно Body.
а _INetSmtpMail работает, но выдает неверную кодировку(
нет ли в АИ способа указать кодировку как WSH при помощи SetShar?

$s_Body = "тест"
$Response = _INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $s_Body, $s_helo, $s_first, $s_trace)

автоит видимо выдает что-то по умолчанию , но не кириллцу.
в заголовках письма вот такая строка
Content-Type: text/plain; charset=US-ASCII

Отправлено: 13:05, 18-11-2009 | #6


Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Цитата SvetlanaK:
_INetSmtpMail работает, но выдает неверную кодировку »
Я специально попробовал отослать вот такое "письмо":
читать дальше »
Код: Выделить весь код
#include <INet.au3>

$s_SmtpServer = "smtp.mail.ru"
$s_FromName = "User"
$s_FromAddress = "Test@list.ru"
$s_ToAddress = "user@list.ru"
$s_Subject = "Test"
Global $as_Body[1]
 $as_Body[0]='Введение в AutoIt.AutoIt v3 - это язык для написания сценариев, напоминающий BASIC. Основным его назначением является автоматизация работ с Windows GUI (графическим интерфейсом пользователя MS Windows). Для выполнения этой сложной задачи предоставляется комбинация испытанных методов, включающих в себя - симуляцию нажатий комбинаций клавиш клавиатуры, перемещения указателя мыши и управления окнами и его визуальными элементами. Как показывает практика, эти "приводные ремни" весьма эффективны для получения работающих решений в ситуациях, когда другие стандартные средства (например, VBScript и SendKeys) оказываются бессильны. По замыслу AutoIt предполагался быть средством "тиражирования конфигураций" ПК. Но с момента создания третьей версии его возможности могут быть использованы для реализации "кухни" автоматизации - написания сценариев решения различных задач, в том числе и для администрирования системы. AutoIt умеет:'&@CRLF& 'Симулировать нажатия комбинаций клавиатуры (поддерживается основная масса раскладок клавиатуры)'&@CRLf&'Симулировать перемещения указателя мыши и нажатия на ее кнопки'&@CRLF&'Перемещать, менять размер и управлять параметрами отображения окон'&@CRLF&'Непосредственно взаимодействовать с "управляющими элементами" (controls) окна (получать/менять надпись, перемещать, отключать, и т.п. действия)'&@CRLF&'Работать с буфером обмена для пересылки его текстового содержания'&@CRLF&'Читать, менять и создавать ключи и значения реестра'
$Response = _INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body)
$err = @error
If $Response = 1 Then
    MsgBox(0, "Success!", "Mail sent")
Else
    MsgBox(0, "Error!", "Mail failed with error code " & $err)
EndIf


Отсылал 2 раза и открывал двумя разными почтовыми программами: The Bat и Pop Peeper, в обоих случаях письмо получено читабельно и в кирилице. (Тему и имя пользователя нужно писать в транслите либо на англ...)

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Отправлено: 18:40, 18-11-2009 | #7


Новый участник


Сообщения: 23
Благодарности: 0

Профиль | Отправить PM | Цитировать


В том то и дело, что все почтовые программы кроме Outlook-а присылают письма через скрипт АИ на русском.
Ну что ж, альтернатива WSH, видимо дело в самом Outlook.
В любом случае спасибо огромное за скрипты и советы.

Отправлено: 12:15, 19-11-2009 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Послать письмо с помощью Microsoft Office Outlook

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Сетевая адресная книга для Microsoft Office Outlook boomer007 Хочу все знать 5 08-12-2011 12:37
Microsoft OUTLOOK 2003-сохранение с помощью Autolt TERMINAL AutoIt 1 21-02-2009 16:27
V. 2007 - Microsoft Office Outlook 2003 и UUENCODE Grekalov Microsoft Exchange Server 1 14-01-2009 17:24
настройка Microsoft Office Outlook 2003 под Rambler poseydon Хочу все знать 1 22-11-2005 13:24
не могу послать письмо Aragorn the 1st Хочу все знать 2 19-10-2004 22:25




 
Переход