我試圖攔截並可能修改所有對mailService.sendMail
的呼叫,以便將電子郵件添加/修改爲bcc
。這是一個臨時實驗,所以如果可能的話,我想避免查找/更改所有現有的代碼。通過metaClass在Grails電子郵件插件中添加/修改密件抄送
例子:
mailService.sendMail {
to '[email protected]'
//bcc may be present
from '[email protected]'
subject 'Hello'
body 'Just testing'
}
我能夠用這個引導程序中創建很輕鬆地攔截來電:
mailService.metaClass.invokeMethod = {String name, args ->
println "intercepting for ${name}..."
def res = delegate.metaClass.getMetaMethod(name, args).invoke(delegate, args)
println "done intercepting"
}
我是在一個完整的損失如何實際修改通話要麼添加一個密件,如果沒有,或者添加一個地址給它,如果它確實存在。 args
參數是關閉 - 我已經看過我能找到的關於該主題的所有內容,而且沒有喜悅。
這是運行在Grails 1.3.7上(我知道)。您可以隨時添加,不論bcc
一個bcc
問題是'args [0]'是發送到'sendMail'方法的閉包。我確實嘗試了兩個想法 - 右移賦予錯誤'方法rightShift()的簽名不適用於參數類型:closure25 ...'。左移引發了一系列攔截,導致堆棧溢出錯誤。順便說一下,我沒有想到出來,直到你提到它,但它實際上能夠解析關閉並跟蹤誰是人們試圖密件抄送... – Kelly
你是否實施了IF語句爲我上面提到過?該IF塊應該避免stackoverflow錯誤。請再次通過答案。 – dmahapatro
@Kelly封閉組合可能不起作用,因爲我們使用Grails 1.3.7獲得的較舊版本的Groovy。有一個解決方法。一旦我進入我的辦公桌,我可以更新它。 – dmahapatro