Прикрепить CSV в Почте - PullRequest
       2

Прикрепить CSV в Почте

0 голосов
/ 01 марта 2012

Я хочу прикрепить файл csv к почте (grails)

Файл в пути уже присутствует.Я использую следующий код

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.ни то, ни другое не работает, вызывая ту же ошибку

attachBytes './web-app/ReadyOrdersFor-$-1993,..name} .csv '). readBytes ()

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Проблема в том, что вы пытаетесь использовать строку пути к файлу в качестве GStringImpl, но строка заключена в одинарные кавычки. GStringImpl изначально поддерживается в groovy в двойных кавычках.

Ваш код должен быть

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

Эта ссылка должна помочь вам понять разницу между использованием одинарных и двойных кавычек в groovy.

0 голосов
/ 01 марта 2012

Вместо того, чтобы пытаться получить ссылку File с помощью new File(path), используйте интерфейс Spring ResourceLoader . ApplicationContext реализует этот интерфейс, поэтому вы можете получить ссылку на него из контроллера (например), например:

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
  }
}

Я не на 100% уверен, что приведенное выше значение path правильное, возможно, вам придется удалить '/'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...