上个月用Delphi+Indy9写了一个SMTP发送邮件的DLL文件,供公司的ERP系统(PowerBuilder)使用。
使用过程中发现一个问题,当邮件主旨过长时,收件者就会收到乱码邮件。
进过在网络上的搜索,然后又看了一下Indy的源代码,发现问题是Indy在编码Subject时,碰到需要编码的内容,比如中文,非ASCII字符,采用了base64编码。编码后的内容如果超过75字节,就拆分成了多行。行与行之间多加了一个回车换行符。
问题找到,怎么解决了?
本打算修改Indy的多行处理方式,结果半天出不来,后来干脆修改75字节的限制,变成175字节,测试居然OK。
那就先这样吧。
具体修改位置在DELPHI_PATH\Source\Indy\IdCoderHeader.pas第599行。