2012-04-16 30 views
1

我試圖發送HTML格式的電子郵件,每個方向discussed here內嵌圖像附件。在我的電子郵件XHTML文件,我有以下行附加的圖像,然後在消息中顯示出來:縫郵件內嵌圖片的問題

<m:message xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:a="http://richfaces.org/a4j" 
    xmlns:rich="http://richfaces.org/rich" 
    xmlns:s="http://jboss.com/products/seam/taglib" 
    xmlns:m="http://jboss.com/products/seam/mail"> 

    <m:from name="#{emailDetails.senderName}" 
     address="#{emailDetails.senderAddress}" /> 
    <m:to name="#{emailDetails.recipientName}" 
     address="#{emailDetails.recipientAddress}" /> 
    <m:subject> 
     <h:outputText value="#{emailDetails.subject}" /> 
    </m:subject> 

    <m:body> 
     <p>THIS IS A TEST</p> 
    <m:attachment contentType="image/png" 
     fileName="dwx_logo.png" value="#{imageData}" 
     status="logoImage" disposition="inline" /> 
    <img src="cid:#{logoImage.contentId}" alt="logo header" 
     border="no" style="margin: 0px; padding: 0px; display: block;" /> 
    </m:body> 
</m:message> 

然而,當我使這個代碼的消息:

我得到下面的異常...請求處理過程中

例外:通過javax.el.E​​LException 與消息產生的原因: 「顯示java.lang.NullPointerException」 org.jboss.el。 util.ReflectionUtil.invokeMethod(ReflectionUtil.java:339) org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:280) org.jboss.el.parser.AstMethodSuffix.getValue(AstMethodSuffix.java:59) org.jboss.el.parser.AstMethodSuffix.invoke(AstMethodSuffix.java:65) org.jboss.el.parser.AstValue.invoke(AstValue.java:96) org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl .java:276) org.jboss.seam.core.Expressions $ 2.invoke(Expressions.java:221) org.jboss.seam.navigation.Pages.callAction(Pages.java:708) org.jboss.seam .navigation.Pages.preRender(Pages.java:331) org.jboss.seam.jsf.SeamPhaseListener.preRenderPage(SeamPhaseListener.java:560) org.jboss.seam.jsf.SeamPhase Listener.beforeRenderResponse(SeamPhaseListener.java:471) org.jboss.seam.jsf.SeamPhaseListener.beforeServletPhase(SeamPhaseListener.java:147) org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:117) COM .sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:214) com.sun.faces.lifecycle.Phase.doPhase(Phase.java:96) com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl的.java: 「」 org.jboss.seam.mail.ui.UIBody:139) javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)

與消息所造成的顯示java.lang.NullPointerException .encodeChildren(UIBody.java:79) org.jboss.seam.ui.util.JSF.renderCh ILD(JSF.java:175) org.jboss.seam.ui.util.JSF.renderChildren(JSF.java:163) org.jboss.seam.mail.ui.UIMessage.encodeChildren(UIMessage.java:192) org.jboss.seam.ui.util.JSF.renderChild(JSF.java:175) org.jboss.seam.ui.util.JSF.renderChildren(JSF.java:163) org.jboss.seam.ui .facelet.RendererRequest.renderFacelet(RendererRequest.java:140) org.jboss.seam.ui.facelet.RendererRequest.run(RendererRequest.java:107) org.jboss.seam.ui.facelet.FaceletsRenderer.render(FaceletsRenderer的.java:43) com.dezinewerks.market.web.actions.test.TestAction.runTest(TestAction.java:986) sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcc essorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.jboss.seam.util.Reflections.invoke (Reflections.java:22)

我也嘗試刪除「disposition = inline」行,此時代碼按預期工作。它只是不渲染圖像內聯,這違背了目的。任何想法,爲什麼設置配置屬性值導致此異常?這是Seam Mail中的錯誤嗎?或者我在我的代碼中做錯了什麼?

在此先感謝您的幫助!

+0

這條線是什麼? com.dezinewerks.market.web.actions.test.TestAction.runTest(TestAction.java:986) – ghostbust555 2012-04-18 01:56:56

+0

這就是我的代碼運行的路線。這是發佈的代碼。 – Shadowman 2012-04-18 13:56:18

+0

不,具體哪一行是986?您的代碼不會與行號一起發佈 – ghostbust555 2012-04-22 18:14:42

回答

3

我自己解決了這個問題。事實證明,任何內聯附件都需要在<m:body />標籤之外定義。標準附件在郵件正文中工作得很好,但內聯附件必須在其外部聲明。一旦我做出這個改變,一切都開始按預期工作。這在文檔中並不清楚,但在Seam發行版的郵件示例中顯示。