2017-08-17 34 views
0

我使用oXygen編輯器XML編輯器19.0和Saxon-EE 9.7.0.15。saxon:發送郵件函數返回java.lang.NullPointerException錯誤

爲了測試saxon:send-mail函數,我寫了下面的簡單樣式表,但每次嘗試運行它時,Saxon都會返回一個java.lang.NullPointerException錯誤。擴展功能(-ext)被激活。我也遇到了與Saxon-PE相同的錯誤。

有沒有人有一個想法,錯誤可能來自哪裏?

這裏是樣式表:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" 
    exclude-result-prefixes="xs" version="3.0"> 

    <xsl:variable name="mailSetup" as="map(xs:string, xs:string)"> 
     <xsl:map> 
      <xsl:map-entry key="'to'" select="'[email protected]'"/> 
      <xsl:map-entry key="'from'" select="'[email protected]'"/> 
      <xsl:map-entry key="'smtp-server'" select="'smtp.gmail.com'"/> 
      <xsl:map-entry key="'username'" select="'[email protected]'"/> 
      <xsl:map-entry key="'password'" select="'mepassword'"/> 
     </xsl:map> 
    </xsl:variable> 

    <xsl:variable name="html" as="xs:string"> 
     <![CDATA[ <html> 
      <body> 
       <h1>Test saxon:send-mail</h1> 
       <p>Test Ok</p> 
      </body> 
     </html>]]> 
    </xsl:variable> 

    <xsl:template name="main"> 
     <xsl:value-of select="saxon:send-mail($mailSetup, 'Test', $html,())"/> 
    </xsl:template> 

</xsl:stylesheet> 
+2

Saxon似乎使用不屬於Java SE的javax.mail API,因此您可能需要通過https://javaee.github.io/javamail/#Download_JavaMail_Release進行安裝,並將其放在類路徑中。我沒有檢查是否解決了這個問題。 –

+1

似乎把那個jar放在類路徑上,並且從命令行運行Saxon並沒有解決問題,9.7我得到了NullPointerException,你說你在oXygen裏面,而9.8我得到了一個由NullPointerException引起的RuntimeException。 –

+1

oXygen似乎已經有了'mailapi.jar'。 –

回答

1

記錄在這裏作爲一個撒克遜錯誤:

https://saxonica.plan.io/issues/3400

的NPE如果任何的郵件選項從地圖失蹤發生。在你的情況下,缺少的選項是實名。

的選項記錄在這裏:

http://www.saxonica.com/documentation/index.html#!functions/saxon/send-mail

除了「CC」的選擇似乎從文檔丟失。

+0

html選項也是需要的。 – colibrisson

+0

有沒有辦法要求連接是SSL? – colibrisson

+0

您可以通過設置Java系統屬性來配置它,請參閱http://www.oracle.com/technetwork/java/javamail145sslnotes-1562622.html –