Показать полную графическую версию : Кодировка в письме
Здравствуйте.
есть код:
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
Письмо всё прекрасно ходит с вложением но вот кодировка: ┬═╚╠└═╚┼ яЁшт√ёшыр
Как изменить на читабельную?
Спасибо.
gkivi, очень похоже на DOS кодировку 866
А чем смотрите?
Смотрю в Microsoft Outlook 2007, но не думаю что это он пакостит. Скрипт видимо с помощью blat сформировал письмо в заведомо неверной кодировке. Что тема письма что сам текст с абракадаброй. файл с вложением отображается нормально.
gkivi, скопируйте текст письма и вставьте в редактор Bred 3 (http://www.astonshell.ru/freeware/bred3/).
По крайней мере сможете прочитать письмо.
Зачем? :) я и так знаю текст письма, проблема не в том чем просмотреть, а чтобы письмо приходило уже в нормальной кодировке.
Смотрю в Microsoft Outlook 2007, но не думаю что это он пакостит. »
Но всё же, попробуйте например Mozilla Thunderbird Portable Edition (http://mozilla-russia.org/products/thunderbird/)
Хорошо, изложу проблему по другому.
Этот скрипт создает письмо с вложением используя blat. Тема и содержание письма при приходе на почту в абракадабре. С вложением никаких проблем.
Вывод: значит blat создаёт в не в той кодировке письмо?
gkivi
blat имеет среди ключей -unicode, нагуглил такую тему (http://sourceforge.net/p/blat/discussion/279864/thread/a9778915). Если будете пробовать, не забудьте отписаться, пожалуйста :)
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
такой вариант не подойдет?
$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
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 и вопрос о кодировке (клиент консольный все-таки) отложил, а тут такая удача :)
Run (@scriptdir & "\blat.exe " & $BlatArgs, @ScriptDir, @SW_HIDE )
На всякий случай к $BlatArgs можно в конце добавить -charset UTF-8, но у меня и так отправляет »
Работает!
параметр -charset UTF-8 не понадобился. )
Спасибо
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.