Проблема с кодировкой электронной почты, отправленной из формы в ASP с текстом на иврите

Я использую CDO.Message для отправки электронных писем из контактной формы на веб-сайте ASP Classic владельцу сайта. Сайт на иврите, и я закодировал все с помощью UTF-8.

Моя проблема в том, что в Outlook 2007 иврит, отправленный из формы, выглядит тарабарщиной. Другой текст на иврите в сообщении электронной почты (например, жестко закодированный текст) отображается правильно.

Я проверил эти электронные письма в Outlook 2010 и в Интернете в Gmail, и все на иврите выглядят нормально.

Конечно, мой клиент имеет Outlook 2007 и вряд ли изменится в ближайшее время.

Кто-нибудь знает, как я могу это исправить?

Вот скрипт для отправки писем:

Const CdoReferenceTypeName = 1
Dim objCDO, objBP
Set objCDO = Server.CreateObject("CDO.Message")
objCDO.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
objCDO.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost"
objCDO.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
objCDO.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False 
objCDO.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60

objCDO.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'basic (clear-text) authentication
objCDO.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]"
objCDO.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "123456"
objCDO.Configuration.Fields.Update

objCDO.MimeFormatted = True
objCDO.To = email_to        
objCDO.Bcc = email_bcc
objCDO.From = email_from        

objCDO.Subject = email_subject      

objCDO.HTMLBody = email_body
objCDO.HTMLBodyPart.charset = "utf-8"
objCDO.BodyPart.charset = "utf-8"                                   

objCDO.Send

Форма отправляется через плагин jquery malsup form таким образом:

$('#contact_form').submit(function() {
    if (myvalidator.isValid()) {
        $(this).ajaxSubmit(function() { 
            $('#form_holder').html('thanks'); 
        });
    }
    return false;
});

Форма также имеет вложение, поэтому отправляется таким образом:

<form action="inc_contact_send.asp" method="post" enctype="multipart/form-data" id="contact_form">

person Dog    schedule 09.05.2012    source источник
comment
@Calon Я не знаю, отклонил ли я уже 25 ваших правок, пожалуйста, перестаньте играть с тегами ..   -  person AlvaroAV    schedule 13.02.2015


Ответы (1)


Попробуйте переместить:

objCDO.BodyPart.charset = "utf-8" 

вверх на пару строк, чтобы он предшествовал присвоению HTMLBody. Возможно, вам также стоит изучить содержимое email_body во время отладки, чтобы убедиться, что он содержит ожидаемый HTML-код.

person AnthonyWJones    schedule 09.05.2012
comment
ну, это был сюрприз... сначала казалось, что это не имеет никакого значения, но теперь, если я вручную изменю кодировку полученного письма в Outlook на UTF-8, то он отображает все правильно... большое спасибо много - person Dog; 10.05.2012
comment
я заметил, что размещение строки charset над тегом HTMLBody фактически приводит к сообщению об ошибке. Запрашиваемая часть тела не найдена в этом сообщении. почта на самом деле отправляется правильно (и, судя по всему, с правильной кодировкой). - person Dog; 17.02.2013