Velocity Engine игнорирует символ @?

Я использую скорость v1.7 для отправки электронной почты с помощью JDK v1.7.

У меня ниже код:

VelocityContext context = new VelocityContext();
String name = "[email protected]";
context.put("userName", name);

И в шаблоне электронной почты (abc.vm) я использовал следующий код:

#if(${userName})        
    Dear ${userName},<br><br>
#end

Почему-то, когда я получаю электронное письмо, оно говорит только

Dear  

вместо

Dear [email protected]

Если я изменю код Java, чтобы он имел правильное имя без символа @, электронная почта отображается правильно

Dear myName

Может ли кто-нибудь сказать мне, почему символ @ пропускается, на самом деле, почему он пропускает все имя и не включает его в электронное письмо????

Спасибо!


person Mike    schedule 25.09.2012    source источник
comment
Попробуйте myname\\@yahoo.com   -  person Reimeus    schedule 26.09.2012


Ответы (1)


Я попытался воспроизвести, и проблемы, кажется, где-то в отправке электронной почты. Сама скорость делает это прекрасно.

Вы можете сузить круг таких проблем, записав результат из Velocity в вывод, журнал или файл, чтобы увидеть, какой текст на данный момент. Также отладка покажет вам, какая скорость возвращается и где в email-отправке проблема со спецсимволами.

Код: VelocityContext context = new VelocityContext();

    context.put("name", "[email protected]");

    String name = "[email protected]";
    context.put("userName", name);

    Template template = null;

    template = Velocity.getTemplate("test.vm");

    StringWriter sw = new StringWriter();

    try {
        template.merge(context, sw);
    } finally {
        sw.close();
    }
    System.out.println(sw);

Шаблон:

Hello $name!

#if(${userName})        
    Dear ${userName},<br><br>
#end

Результирующий вывод:

Hello [email protected]!

    Dear [email protected],<br><br>
person centic    schedule 27.09.2012