Использование CDO.message.HTMLBody в объекте MSScriptControl.ScriptControl
На языке c-ish я создавал экземпляр объекта MSScriptControl.ScriptControl и использовал метод.AddCode для запуска VBScript, который, в свою очередь, создавал экземпляр объекта CDO.Message.
Тем не менее, каждый раз, когда я добрался до "objMsg.HTMLBody = \"" + email_body + "\" \n"
(обратите внимание, что это было в c, VBScript будет:objMsg.HTMLBody = email_body
строка кода, я получил ошибку
Ошибка компиляции Microsoft VBScript: неопределенная строковая константа
1 ответ
В конце концов, я обнаружил, что проблема в том, что переменная email_body
содержит символ 10 (\n
) в нем (несколько мест), который интерпретировался в VBScript как конец строки кода (но перед закрывающей кавычкой), что является синтаксической ошибкой.
Я не могу себе представить, что я единственный, кто пропустил это, поэтому я пишу небольшую "базу знаний" здесь.
Решение. В родительском языке (в данном случае в странной форме c с именем hsl) используйте метод string-replace, чтобы заменить все экземпляры \n
с <br>
и теперь он отлично работает, например:StrReplace(email_body, "\n", "<br>"
затем позвоните ScriptControl.AddCode( ... );
метод.