2017-08-17 44 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 –