2012-03-01 6 views
0

メール(grails)にCSVファイルを添付したいメールにCSVを添付する

パス内のファイルはすでに存在しています。私は次のコードを使用しています

sendMail { 
    multipart true 
    from "$senderName <$fromAddress>" 
    to toAddress 
    cc message.cc 
    subject message.subject 
    body content.plaintext 
    html content.html 
    attachBytes './web-app/ReadyOrdersFor-${vendor.name}','text/csv', new File('./web-app/ReadyOrdersFor-${vendor.name}').readBytes() 
} 

エラーが表示されます。
java.io.FileNotFoundException:./web-app/ReadyOrdersFor-${vendor.name}.csv(そのようなファイルまたはディレクトリ)

どちらもこれは同じエラーに

を促す働き

attachBytes './web-app/ReadyOrdersFor-${vendor.name}.csv','text/csv'、新しいファイル( './ web-app/ReadyOrdersFor- $ {vendor.name} .csv') .readBytes()

+0

このファイルが指定されたパスに存在していますか? –

答えて

1

問題は、ファイルパス文字列をGStringImplとして使用しようとしていますが、文字列が一重引用符で囲みます。 GStringImplは、groovyで二重引用符でネイティブにサポートされています。あなたのコードは

attachBytes "./web-app/ReadyOrdersFor-${vendor.name}",'text/csv', new File("./web-app/ReadyOrdersFor-${vendor.name}").readBytes() 

This linkでなければなりません

あなたはグルーヴィーで、単一引用符と二重引用符を使用しての違いを理解するのに役立つはずです。

0

new File(path)を使用してFile参照を取得する代わりに、ResourceLoaderインターフェイスを使用してください。

class MyController implements ApplicationContextAware { 

    private ResourceLoader resourceLoader 

    void setApplicationContext(ApplicationContext applicationContext) { 
    resourceLoader = applicationContext 
    } 

    def someAction() { 
    String path = "classpath:/ReadyOrdersFor-${vendor.name}" 
    File csvFile = resourceLoader.getResource(path).file 
    } 
} 

私は上記path値が正しい100%わからないんだけど、あなたは削除する必要があるかもしれません:あなたは(たとえば)コントローラからそれへの参照を取得することができるようにApplicationContextはこのように、このインタフェースを実装します'/'

関連する問題