问题是这样的,我想使用邮件服务器来实现一个消息系统,不过我的消息需要自定义的分类,于是在邮件头信息中加入一个自定义的字段:
Message message = new Message();
message.From = "sss";
message.AddRecipient("brookes@mail.mydomain.com", null, null);
message.MailServerUserName = "brookes";
message.MailServerPassWord = "password";
message.From = "sss";
message.AddRecipient("brookes@mail.mydomain.com", null, null);
message.MailServerUserName = "brookes";
message.MailServerPassWord = "password";
//加入自定义头信息
message.AddHeader(
message.Subject = "xxxxxxxxxx";
message.Send("mail.mydomain.com",false);
message.Send("mail.mydomain.com",false);
"MY-TYPE", "BROOKES LUAN");
这样,我就可以在读取邮件的时候,先读取头信息,然后再通过判断这个头信息,决定进行下面相应的分类处理。由于使用message.Headers.GetHeader("X-MY-TYPE")得到的头信息是加密过的,看JMail的文档,使用message.DecodeHeader("X-MY-TYPE"),结果。。。,得到的是faal error!
查了很多地方,包括Dimac官方,没有更进一步的资料,只好放弃。改用在发送的时候,指定message.ISOEncodeHeaders = false暂时解决了这个问题。我出问题的使用环境是.Net Framework2.0+JMail4.4 Professional。以后有时间研究一下。
另外,发现JMmail一个让人无语的设定。发送的时候指定Header的名字不需要前面的“X-”,而到了读取的时候就必须加上这个前缀,也是个BUG?