diff options
Diffstat (limited to 'vendor/ruby-msg/TODO')
-rw-r--r-- | vendor/ruby-msg/TODO | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/vendor/ruby-msg/TODO b/vendor/ruby-msg/TODO new file mode 100644 index 000000000..2e4309c21 --- /dev/null +++ b/vendor/ruby-msg/TODO @@ -0,0 +1,184 @@ += Newer Msg + +* a lot of the doc is out of sync given the Mapi:: changes lately. need to + fix. + +* extend msgtool with support for the other kinds of msg files. things like, + - dump properties to yaml / xml (with option on how the keys should be dumped). + should be fairly easy to implement. hash, with array of attach & recips. + - just write out the mime type + - convert to the automatically guessed output type, also allowing an override + of some sort. have a batch mode that converts all arguments, using automatic + extensions, eg .vcf, .eml etc. + - options regarding preferring rtf / html / txt output for things. like, eg + the output for note conversion, will be one of them i guess. + +* fix nameid handling for sub Properties objects. needs to inherit top-level @nameid. + +* better handling for "Untitled Attachments", or attachments with no filename at all. + maybe better handling in general for attached messages. maybe re-write filename with + subject. + +* do the above 2, then go for a new release. + for this release, i want it to be pretty robust, and have better packaging. + have the gem install 2 tools - oletool (--tree, --read, --write, --repack) + and msgtool (--convert, --dump-attachments etc) + fix docs, add option parsing etc etc. + submit to the usual gem repositories etc, announce project as usable. + +* better handling for other types of embedded ole attachments. try to recognise .wmf to + start with. etc. 2 goals, form .eml, and for .rtf output. + +* rtf to text support, initially. just simple strip all the crap out approach. maybe html + later on. sometimes the only body is rtf, which is problematic. is rtf an allowed body + type? + +* better encoding support (i'm thinking, check some things like m-dash in the non-wide + string type. is it windows codepage?. how to know code page in general? change + ENCODER[] to convert these to utf8 i think). I'm trying to just move everything to utf8. + then i need to make sure the mime side of that holds up. + +* certain parsing still not correct, especially small properties directory, + things like bools, multiavlue shorts etc. + +* test cases for msg/properties.rb msg/rtf.rb and mime.rb +* regarding the mime fix ups. check out: + +- http://rubyforge.org/projects/rubymail/, and +- http://rubyforge.org/projects/mime-alt-lite/ + +both haven't been touched in 2 years though. + +* get some sort of working From: header + there doesn't appear to be a way to get an smtp address for the sender in an + internal mail. you need to query the exchanger server, using the sender_entryid + as far as i can tell. + you may also get these so called "X.400" addresses for external recipients + that are on the GAL (Global Address List), as custom recipients. + (mostly complete. better way?) +* check lots of little details: encoding issues with code pages etc other + than ascii stuff. consider Msg, Mime, Vcard etc, to check its clean. check + timezones, inaccuracies in date handling. +* http://msdn2.microsoft.com/en-us/library/ms526761.aspx + import guids for these? +PS_ROUTING_EMAIL_ADDRESSES +PS_ROUTING_ADDRTYPE +PS_ROUTING_SEARCH_KEY +PS_ROUTING_DISPLAY_NAME +PS_ROUTING_ENTRYID +* check this thing i wrote: + creating ones in ps_mapi works strangely, as ps_mapi is the top levels ones. + don't get entries in nameid. as should match the definitions. + however still get allocated an 8 number. that number becomes permanent... +* do something about the message class-specific range, 0x6800 through 0x7FFF. +* multivalue encoding may explain some of the unknown data in properties objs +* get some clean test msgs from somewhere +* tackle other types of msgs, such as appointments, contacts etc, converting + to their appropriate standard types too. + would like to look at this next. see about the content specific range + http://en.wikipedia.org/wiki/ICalendar + is it better/easier to go through micro formats? there are libraries for ruby + already i think. check this out. although using IMC standards seem to make + more sense. encoding issues? + try contact => vcf, + note => ?? icalendar. VTODO? / VJOURNAL? + appointment => VEVENT? + (initial try done. really basic vcard output supported. not difficult) +* ole code is suppopsed to be able to return guids for something too. supporting + all this probably means creating a new file for ole/types.rb, containing all + the various classes, and binary conversion code. +* some dubiously useful info about some unknown codes i wrote: +unknown property 5ff6 + * appears to be equal to display_name, and transmitable_display_name +unknown property 5ff7 + * recipient.properties[0x5ff7].upcase == recipient.properties.entryid + is equivalent, but not all uppercase. + everything else is upper though. maybe a displayname kind of thing. +* common relationship + CGI.escape(msg.properties.subject.strip).tr('+', ' ') + '.EML' == msg.properties.url_comp_name + +(28 bytes binary data and msg.properties.sender_email_address and "\000") +entryids are a strange format. for internal or from exchange whatever, they have that +EX:/O=XXXXXX/... +otherwise, they may have SMTP in them. + such as msg.properties.sent_representing_search_key + == "SMTP:SOMEGUY@XXX.COM\000" + but Ole::UTF16_TO_UTF8[msg2.properties.sender_entryid[/.*\000\000(.+)\000/, 1][0..-2]] + == "SomeGuy@XXX.COM" + for external people, entry ids have displayname and address. + +longer term, i want to investigate the overlap with PST stuff, like libpst, +which seems to be another kind of mapi tag property storage, and try to +understand the relationship with existing TNEF work also. + +hmmmm for future work: +http://blogs.msdn.com/stephen_griffin/archive/2005/10/25/484656.aspx + + += Older + +- set 'From' in Msg#populate_headers. + Notes: + # ways to get the sender of a mail. + # if external, you can do this (different for internal). + name, protocol, email = Ole::UTF16_TO_UTF8[msg.props.sender_entryid[24..-1]].split(/\x00/) + # here is an excerpt from a yaml dump. + # need to consider how to get it. also when its a draft, and other stuff. + creator_name: + sent_representing_name: + last_modifier_name: + sender_email_address: + sent_representing_email_address: + sender_name: +- fill out some of the tag holes. mostly done +- properly integrate rtf decompression, and the html conversion from rtf +- figure out some things, like entryids, and the properties directories, + and the ntsecurity data 0e27. + http://peach.ease.lsoft.com/scripts/wa.exe?A2=ind0207&L=mapi-l&P=24515 + "In case anybody is interested, Exchange stores PR_NT_SECURITY_DESCRIPTOR as a header plus the regular self=-relative SECURITY_DESCRIPTOR structure. The first two bytes of the header (WORD) is the length of the header; Read these two bytes to find out how many bytes you must skip to get to the real data. Many thanks to Stephen Griffin for this info." + using outlook spy gives an actual dump. for example: + << + Control: SE_DACL_AUTO_INHERITED | SE_DACL_DEFAULTED | SE_DACL_PRESENT | SE_GROUP_DEFAULTED | SE_OWNER_DEFAULTED | SE_SACL_AUTO_INHERITED | SE_SACL_DEFAULTED | SE_SELF_RELATIVE + Owner: + SID: S-1-5-21-1004336348-602609370-725345543-44726 + Name: lowecha + DomainName: XXX + Group: + SID: S-1-5-21-1004336348-602609370-725345543-513 + Name: Domain Users + DomainName: XXX + Dacl: + Header: + AceType: ACCESS_DENIED_ACE_TYPE + AceFlags: INHERITED_ACE + Mask: fsdrightReadBody (fsdrightListContents) | fsdrightWriteBody (fsdrightCreateItem) | fsdrightAppendMsg (fsdrightCreateContainer) | fsdrightReadProperty | fsdrightWriteProperty | fsdrightExecute | fsdrightReadAttributes | fsdrightWriteAttributes | fsdrightWriteOwnProperty | fsdrightDeleteOwnItem | fsdrightViewItem | fsdrightWriteSD | fsdrightDelete | fsdrightWriteOwner | fsdrightReadControl | fsdrightSynchronize + Sid: + SID: S-1-5-7 + Name: ANONYMOUS LOGON + DomainName: NT AUTHORITY + >> + Not something i care about at the moment. + +- conversion of inline images. + Content-Location, cid: urls etc etc. + what would be cool, is conversion of outlooks text/rtf's only real "feature" over + text/html - convert inline attachments to be <a href> links, using cid: urls to the + actual content data, and using an <img with cid: url to a converted image from the + attach_rendering property (image data), along with the text itself. (although i think + the rendering may actually include the text ??. that would explain why its always clipped. + can these be used for contact pictures too? +- entryid format cf. entry_id.h. another serialized structure. + entryids are for the addressbook connection. EMS (exchange message something), AB + address book. MUIDEMSAB. makes sense. + +mapidefs.h: + + 174 /* Types of message receivers */ + 175 #ifndef MAPI_ORIG + 176 #define MAPI_ORIG 0 /* The original author */ + 177 #define MAPI_TO 1 /* The primary message receiver */ + 178 #define MAPI_CC 2 /* A carbon copy receiver */ + 179 #define MAPI_BCC 3 /* A blind carbon copy receiver */ + 180 #define MAPI_P1 0x10000000 /* A message resend */ + 181 #define MAPI_SUBMITTED 0x80000000 /* This message has already been sent */ + 182 #endif |