繁体   English   中英

Mirth Connect:处理附件

[英]Mirth Connect: Processing Attachment

Mirth Connect Server 3.5.1,Java版本:1.8.0_171

我已经成功地将表单数据从POSTMAN(请参阅postman.xml)发送到MIRTH(请参见下面的JavaScript Writer)。 我的JavaScript编写器可以获取所有信息,但我不知道如何处理base64文件内容。

此代码运行没有错误,但是我收到的电子邮件没有附件。 其他一切都很好。

postman.xml:

<HttpRequest>
   <Content boundary="--------------------------287734394493965736503744" multipart="yes">
      <Part>
         <Headers>
            <Content-Disposition>form-data; name="channelFilter"</Content-Disposition>
         </Headers>
         <Content multipart="no">attachment</Content>
      </Part>
      <Part>
         <Headers>
            <Content-Disposition>form-data; name="to"</Content-Disposition>
         </Headers>
         <Content multipart="no">coisox@gmail.com</Content>
      </Part>
      <Part>
         <Headers>
            <Content-Disposition>form-data; name="cc"</Content-Disposition>
         </Headers>
         <Content multipart="no">coisox3@gmail.com</Content>
      </Part>
      <Part>
         <Headers>
            <Content-Disposition>form-data; name="subject"</Content-Disposition>
         </Headers>
         <Content multipart="no">From Postman With Attachment</Content>
      </Part>
      <Part>
         <Headers>
            <Content-Disposition>form-data; name="body"</Content-Disposition>
         </Headers>
         <Content multipart="no">Lalala</Content>
      </Part>
      <Part>
         <Headers>
            <Content-Disposition>form-data; name="file"; filename="xls.png"</Content-Disposition>
            <Content-Type>image/png</Content-Type>
         </Headers>
         <Content encoding="Base64" multipart="no">iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAA3NCSVQICAjb4U/gAAAACXBIWXMA AAG7AAABuwE67OPiAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAWJQTFRF ////4uLrhLtZ4uXmwcbLhL1a4ubn4uXnhL1ahL1bhb5bhr5dh79eh79fiL9fiL9gicBgi8FjjMFl jcJmjsJoj8Noj8NpkMNqkcRrksVtk8VvlMZvlcZxlsdyl8d0mMV4mch2msl4nMp6nst9oMyAoc2B o8iMo86Epc+Gps+Ip9CJqtGMq9KOr9SUsLe9sNWVsdWWs9aZtLvAtbzBtdebttidt9ifuNmfutqi u9qjvNumwN2qwN2rwcfMxuCyyOG1yeK3ytHYytTUzNzGzeS8zuW9zuW+z9Xb0ObA0ebB0ebC0+fD 1tvf1unH1unI2OrL2evN2+zP3ODj3eDj3u3S3u3T4O7V4uXn4u/Y5PDa5PHb5fHc5fHd5vLe5/Lf 6PPh6fPi7vbo7/bp7/bq8Pfq8ffs8vju8/nv9Pnw9Pnx9frx9fry9/v1+Pv1+fz3+vz5+/35/P36 /P37/f78///+////UwWFaAAAAAh0Uk5TABo8psDJ5upYXiAEAAAB00lEQVRYw93X90/CQBQHcLBa nrhn3RsHiooK7j1Q3LPiXrhBEd//b4GqRW3vtedPfJP2JZfcJ3m53F3OZtPGLoiyQbJtjNgdsmF6 WYIgMwCWIDIBhiCzAWOBAhgKJMBIoAEGAhHQF6iArkAG9AQ6oCOwgEGWwAImexkCC9gdYAgyU5g0 7kImZG32O5YArWAN0AgWgW/BKvAlWAY+BeuAKnAAKYEHSApcQELgAxSBE5DXeAH5/4CsHDCRxvlf gKn5ivALAJPJbKA4VfLUT41rdMxTQAL8cW+ieF580BAdVgcrQqjkwU0BPPjWBtDyil7owaA6OIMn QxMHsWlSC0G8qyq7wXXQAFGsU/6FThJQcIRH+3herAXCOJ5HXwXpFvGpBrSA7x2fVzvJy7iCuAlp ADRvvSNeuGlAH8ZiOJIOAFR6Q/haSwGaX9DvxXjHDwAg9wz7CUDpFW4ALOJjtQKsS5JU6QTnwlgT QHkEuwnAEl6WKEtxjNsKkMx1UXkcMbwXwXAJAZgKtyRK9eky1NwngdN86DpU6ttyHcdmqm91SZl+ Hpg8VNs5j/X2Od2LZZaWACcQ2Pn/qy2DANHcfNH00/dHBNOP7/Q47H883wVyF6KQmv8Bq6jVN1IO SxsAAAAASUVORK5CYII=</Content>
      </Part>
   </Content>
</HttpRequest>

JavaScript编写器:

var email = new Packages.org.apache.commons.mail.SimpleEmail();

email.setHostName("smtp.googlemail.com");
email.setSmtpPort(465);
email.setAuthenticator(new Packages.org.apache.commons.mail.DefaultAuthenticator("myusername", "mypassword"));
email.setSSLOnConnect(true);

var part = connectorMessage.getRawData().split('<Part>');
for(i=1; i<part.length; i++) {
    var disposition = part[i].split('<Content-Disposition>')[1].split('</Content-Disposition>')[0];
    var name = disposition.split('; name="')[1].split('"')[0];

    var value = '';
    if(disposition.indexOf('; filename="')>-1) {
        var filename = disposition.split('; filename="')[1].split('"')[0];
        var type = part[i].split('<Content-Type>')[1].split('</Content-Type>')[0];
        value = part[i].split('<Content encoding="Base64" multipart="no">')[1].split('</Content>')[0];
        //var file = addAttachment(value.encodedData, type);
        var file = addAttachment(value, type);
    }
    else {
        value = part[i].split('<Content multipart="no">')[1].split('</Content>')[0];
    }

    email.setFrom("test@gmail.com");
    if(name=='to') email.addTo(value);
    else if(name=='cc') email.addCc(value);
    else if(name=='subject') email.setSubject(value);
    else if(name=='body') email.setMsg(value);
}

email.send();

您的问题是,您正在使用addAttachment方法。 如果只是像您一样调用此方法,则它与您放在一起的电子邮件对象无关,而是将附件添加到Mirth消息中。 您应该会在频道中看到一个附件标签,其中包含您已处理邮件的附件。

阅读文档,了解如何在您使用的电子邮件库中添加附件,并采取相应措施。 也许就像调用email.addAttachment()一样简单,但是我不知道。

PS。 为什么不使用Mirth的XML处理功能来访问XML的不同部分,而不是手工拆分XML字符串?

PPS。 为什么不使用Mirth的SMTP发送器,而不是手工完成所有操作?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM