Использование 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( ... ); метод.

Другие вопросы по тегам