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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   _INetSmtpMailCom - Получение письма с иероглифами (http://forum.oszone.net/showthread.php?t=211898)

TERMINAL 25-07-2011 16:32 1719593

_INetSmtpMailCom - Получение письма с иероглифами
 
Приветствую всех !
Имеется вырезанный скрипт
Код:

#include <ScreenCapture.au3>
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <File.au3>
#include <GDIPlus.au3>
 #include <INet.au3>
 #Include  <Crypt.au3>
#Include  <WinAPI.au3>

#NoTrayIcon

Opt("TrayIconHide", 1)

$FromAddress = "test@mail.ru" ; адрес ел. почты отправителя
$ToAddress = "test@mail.ru" ; адрес ел. почты получателя
$Username = "test@mail.ru" ; адрес ел. почты отправителя
$Password = "xxxxx" ; пароль к ел. почте отправителя

Global $SmtpServer = "smtp.mail.ru" ; адрес smtp-сервера вашей ел. почты
Global $FromName = "Письмо-тест" ; ваше имя
Global $Subject = "Tecn" ; темя сообщения
Global $Body = "Почтовые настройки настроены верно !"; текст сообщения
Global $AttachFiles = "" ; файлы которые нужно присоединить к письму, если файлов несколько то следует разделять их точкой с запятой
Global $CcAddress = "" ; address for cc - leave blank if not needed
Global $BccAddress = "" ; address for bcc - leave blank if not needed
Global $Importance = "High" ; Send message priority: "High", "Normal", "Low"

Global $IPPort = 25 ; port used for sending the mail
Global $ssl = 0 ; enables/disables secure socket layer sending - put to 1 if using httpS
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

_INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body , $AttachFiles, $CcAddress , $BccAddress, $Username, $Password, $IPPort, $ssl)
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, $ssl)
    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

При получении почты, в некоторых почтовиках, принимается письмо с иероглифами (например, The Bat!). Заранее спс.

Creat0R 25-07-2011 21:43 1719773

Цитата:

Цитата TERMINAL
При получении почты, в некоторых почтовиках, принимается письмо с иероглифами (например, The Bat!). Заранее спс. »

Заранее пожалуйста.

yukuru 26-07-2011 00:32 1719874

иероглифы при любых соощениях, или только русско язычных?

Creat0R 26-07-2011 00:47 1719880

TERMINAL,
Телепаты уволены.
В чём конкретно вопрос?

TERMINAL 27-07-2011 12:55 1720810

yukuru, только при сообщениях на русском языке, в шапке готовый скрипт (только осталось ввести свои настройки почты), можете проверить у себя.
На Microsoft Office Outlook 2003 такой проблемы нет, а вот в The Bat! version 5 и в Ubunta 10.10 такая проблемы есть, выскакивает что-то типа токого
Цитата:

рПЮФПЧЩЕ ОБУФТПКЛЙ ОБУФТПЕОЩ ЧЕТОП !

оБ ЬФПФ РПЮФПЧЩК СЭЙЛ ВХДХФ РТЙИПДЙФШ УПППВЭЕОЙС ПВ ХУРЕЫОПН ПЛПОЮБОЙЙ ТБВПФЩ
РТПЗТБННЩ (тЕЪЕТЧОПЕ ЛПРЙТПЧБОЙЕ ВБЪЩ ДБООЩИ 1C ЧЕТУЙЙ 7)
ЙМЙ ЦЕ ВХДХФ РТЙИПДЙФШ ПФЮЈФЩ ПВ ПЫЙВЛБИ, ЛПФПТЩЕ ЧПЪОЙЛМЙ РТЙ ТБВПФЕ РТПЗТБННЩ.

yukuru 28-07-2011 02:40 1721259

выставь в Зибате автокодировку....думаю на этот проблема будет исчерпана.
это проблема не отправки видимо а получения.

TERMINAL 28-07-2011 09:38 1721360

yukuru, мне бы хотелось решить это через отправку ! Жду что скажет гуру Creat0R ...
.

Creat0R 28-07-2011 14:34 1721588

Цитата:

Цитата TERMINAL
мне бы хотелось решить это через отправку »

Можно попробовать кодировать строку в UTF перед отправкой:

Код:

Global $Body = BinaryToString(StringToBinary("Почтовые настройки настроены верно !", 4))

madmasles 28-07-2011 21:43 1721890

Цитата:

Цитата Creat0R
Можно попробовать кодировать строку в UTF перед отправкой »

Кракозябры - KOI8, поможет ли?

Creat0R 29-07-2011 01:14 1721967

Цитата:

Цитата madmasles
Кракозябры - KOI8 »

Это не KOI, это UTF-8.

Цитата:

Цитата madmasles
поможет ли? »

Если бы я знал точно, то не писал бы...
Цитата:

Цитата Creat0R
Можно попробовать »

;)

madmasles 29-07-2011 07:29 1722028

Цитата:

Цитата Creat0R
Это не KOI, это UTF-8. »

Почему?
Код:

#include <Encoding.au3>

$sString = 'рПЮФПЧЩЕ ОБУФТПКЛЙ ОБУФТПЕОЩ ЧЕТОП !' & _
        ' оБ ЬФПФ РПЮФПЧЩК СЭЙЛ ВХДХФ РТЙИПДЙФШ УПППВЭЕОЙС ПВ ХУРЕЫОПН ПЛПОЮБОЙЙ ТБВПФЩ' & _
        ' РТПЗТБННЩ (тЕЪЕТЧОПЕ ЛПРЙТПЧБОЙЕ ВБЪЩ ДБООЩИ 1C ЧЕТУЙЙ 7)' & _
        ' ЙМЙ ЦЕ ВХДХФ РТЙИПДЙФШ ПФЮЈФЩ ПВ ПЫЙВЛБИ, ЛПФПТЩЕ ЧПЪОЙЛМЙ РТЙ ТБВПФЕ РТПЗТБННЩ.'

MsgBox(0, 'UTF8', _Encoding_UTF8ToANSI($sString))
MsgBox(0, 'KOI8', _Encoding_KOI8To1251($sString))

Encoding.au3

TERMINAL 29-07-2011 12:31 1722172

madmasles, это же у тебя просто пример расшифровки...Я отсылаю тело письма Почтовые настройки настроены верно !, а мне приходит рПЮФПЧЩЕ ОБУФТПКЛЙ ОБУФТПЕОЩ ЧЕТОП ! вот в чем проблемка.
Creat0R, твой вариант не подошёл, а жаль.

TERMINAL 01-08-2011 12:51 1723855

madmasles, Creat0R, неподскажете почему иногда письма не приходят?


Время: 18:52.

Время: 18:52.
© OSzone.net 2001-