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

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

gkivi 10-09-2013 11:45 2215522

Кодировка в письме
 
Здравствуйте.
есть код:

Код:

SmtpServer = "smtp.123.ru"    ; адрес SMTP сервера
$Port = "25"                  ; Порт SMTP сервера
$FromAddress = "123l@123.ru"  ; адрес отправителя
$ToAddress = "123@123.ru"    ; адрес назначения
$Subject = """текст"""    ; тема письма
$Body = """Текст"""    ; тело письма (сам текст письма)
$AttachFiles = "temp.txt"    ; прикреплённые файлы к письму
$Username = "123@123.ru"      ; имя пользователя аккаунта, с которого отправляется
$Password = "123"              ; Пароль

$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

Письмо всё прекрасно ходит с вложением но вот кодировка: ┬═╚╠└═╚┼ яЁшт√ёшыр
Как изменить на читабельную?
Спасибо.

yurfed 10-09-2013 12:07 2215536

gkivi, очень похоже на DOS кодировку 866
А чем смотрите?

gkivi 10-09-2013 12:20 2215547

Смотрю в Microsoft Outlook 2007, но не думаю что это он пакостит. Скрипт видимо с помощью blat сформировал письмо в заведомо неверной кодировке. Что тема письма что сам текст с абракадаброй. файл с вложением отображается нормально.

yurfed 10-09-2013 12:35 2215558

gkivi, скопируйте текст письма и вставьте в редактор Bred 3.
По крайней мере сможете прочитать письмо.

gkivi 10-09-2013 12:46 2215560

Зачем? :) я и так знаю текст письма, проблема не в том чем просмотреть, а чтобы письмо приходило уже в нормальной кодировке.

yurfed 10-09-2013 13:18 2215576

Цитата:

Цитата gkivi
Смотрю в Microsoft Outlook 2007, но не думаю что это он пакостит. »

Но всё же, попробуйте например Mozilla Thunderbird Portable Edition

gkivi 12-09-2013 09:05 2216504

Хорошо, изложу проблему по другому.
Этот скрипт создает письмо с вложением используя blat. Тема и содержание письма при приходе на почту в абракадабре. С вложением никаких проблем.
Вывод: значит blat создаёт в не в той кодировке письмо?

oz84 13-09-2013 14:51 2217299

gkivi
blat имеет среди ключей -unicode, нагуглил такую тему. Если будете пробовать, не забудьте отписаться, пожалуйста :)

oz84 15-09-2013 03:23 2218050

gkivi, отправляйте строкой
Run (@scriptdir & "\blat.exe " & $BlatArgs, @ScriptDir, @SW_HIDE )
На всякий случай к $BlatArgs можно в конце добавить -charset UTF-8, но у меня и так отправляет. С blat.dll не прокатывает.

З.Ы. Blat версии 3.1.1, Microsoft Outlook не люблю, пользуюсь Sylpheed.

support23 17-09-2013 16:20 2219397

такой вариант не подойдет?

Код:

$SmtpServer = "smtp.123.ru"    ; адрес SMTP сервера
$Port = "25"                  ; Порт SMTP сервера
$FromAddress = "123l@123.ru"  ; адрес отправителя
$ToAddress = "123@123.ru"    ; адрес назначения
$Subject = """текст"""    ; тема письма
$Body = """Текст"""    ; тело письма (сам текст письм
$AttachFiles = "temp.txt" 
$ToCopy    = "" 
$Username = "123@123.ru"      ; имя пользователя аккаунта, с которого отправляется
$Password = "123"              ; Пароль
     
      $objSMTPmail = ObjCreate("CDO.Message")
      $objSMTPmail.From = $FromAddress
      $objSMTPmail.To = $ToAddress
      $objSMTPmail.Cc = $ToCopy     
      $objSMTPmail.Subject = $Subject
      $objSMTPmail.Textbody = $Body
      $objSMTPmail.BodyPart.Charset = "utf-8"
      $objSMTPmail.AddAttachment ($AttachFiles)
      $objSMTPmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
$objSMTPmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserver") =  $SMTPSERVER
$objSMTPmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $SMTPPORT
$objSMTPmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 
$objSMTPmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $Username
$objSMTPmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $Password
$objSMTPmail.Configuration.Fields.Update
$objSMTPmail.Send


oz84 17-09-2013 19:43 2219505

support23, можно чуть подробнее - зачем schemas.microsoft.com?
Если не вызывать функцию blat.dll, а запускать blat.exe, то письмо уходит в UTF-8 - нет проблем ни с темой, ни с телом письма.
Как вариант попробовать заменить в функции _SendMail
Код:

$result=DllCall($BlatDLL,"int","Send","str",$CMDstring)
на
Код:

$result=DllCall($BlatDLL,"int","Send","wstr",$CMDstring)
Планировал делать GUI и вопрос о кодировке (клиент консольный все-таки) отложил, а тут такая удача :)

gkivi 18-09-2013 07:38 2219670

Цитата:

Цитата oz84
Run (@scriptdir & "\blat.exe " & $BlatArgs, @ScriptDir, @SW_HIDE )
На всякий случай к $BlatArgs можно в конце добавить -charset UTF-8, но у меня и так отправляет »

Работает!
параметр -charset UTF-8 не понадобился. )
Спасибо


Время: 09:44.

Время: 09:44.
© OSzone.net 2001-