0

JDKv1.7でメールを送信するためにvelocityv1.7を使用しています

私は以下のコードを持っています:

VelocityContext context = new VelocityContext();
String name = "myname@yahoo.com";
context.put("userName", name);

また、メールテンプレート(abc.vm)では、以下のコードを使用しました。

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

どういうわけか、私がメールを受け取ったとき、それは言うだけです

Dear  

それ以外の

Dear myname@yahoo.com

@文字なしで適切な名前を持つようにJavaコードを変更すると、電子メールが適切に表示されます

Dear myName

@文字がスキップされる理由を誰かに教えてもらえますか?実際、名前全体をスキップしてメールに含めないのはなぜですか????

ありがとう!

4

1 に答える 1

2

再現してみましたが、メール送信のどこかに問題があるようです。Velocity自体がこれをうまくレンダリングします。

Velocityからの結果を出力、ログ、またはファイルに書き込んで、この時点でのテキストを確認することで、このような問題を絞り込むことができます。また、デバッグにより、どの速度が返されるか、および電子メール送信のどこに特殊文字の問題があるかが示されます。

コード:VelocityContext context = new VelocityContext();

    context.put("name", "Velocity@mycompany.com");

    String name = "myname@yahoo.com";
    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 Velocity@mycompany.com!

    Dear myname@yahoo.com,<br><br>
于 2012-09-27T19:15:35.293 に答える