David Belohrad <da...@belohrad.ch> writes: > Dear All, > > i'm using org. And I'm using notmuch (that's why I address both mailing > lists). Now, writing an email in everyday bussiness requires a > non-significant time of your workhours. So I'd like to have this event > in my org agenda. So any time I send some email with a given subject, > I'd like to 'automatically' entry the information about it into > e.g. sentmails.org in form of a diary entry, with appropriate tag.
I do something like this in Gnorb, which I'd recommend you use except it's mostly Gnus specific. I do it in two parts, but you could do it in one. Basically I add a function to the `message-header-hook' (which ensures that all the message headers have been generated properly). The important bits look like: (save-restriction (message-narrow-to-headers) (let ((link (and (mail-fetch-field "Gcc") (org-store-link nil))) (org-capture-link-is-already-stored t) ;; Collect date, subject, to, and msg-id with ;; `mail-fetch-field'. Construct date-ts and date-ts-ia with ;; (format-time-string ;; (org-time-stamp-format t [t]) ;; (date-to-time date)) ) (if link (org-add-link-props :date date :date-timestamp date-ts :date-timestamp-inactive date-ts-ia :annotation link) (org-store-link-props :subject subject :to to :date date :date-timestamp date-ts :date-timestamp-inactive date-ts-ia :message-id msg-id :annotation link)) (org-capture nil gnorb-gnus-new-todo-capture-key))) So, if a "Gcc:" header is present, make the link using `org-store-link', then add more fields using `org-add-link-props'. If it's not, then fake it by storing all necessary fields using `org-store-link-props'. Because we let `org-capture-link-is-already-stored' to t, the capture process doesn't try to create a new link, but just uses the values we've stored. Obviously the downside is that, without a "Gcc:" header, org can't actually make a real link to the message. It doesn't know where it's going to be. However if you know that all your sent messages can be reached with a link that looks like "notmuch:id#Message-id", then you can make that yourself in your org capture template with something like "[[notmuch:id#%:message-id][%:subject]]" I hope that's not too confusing! See: https://github.com/girzel/gnorb/blob/master/gnorb-gnus.el#L259 https://github.com/girzel/gnorb/blob/master/gnorb-gnus.el#L437 Yours, Eric > In example: > > I'm sending a mail to Tom, with subject 'dealing vme register > mapping'. > > At the moment I send this email (using smtpmail), I'd like an entry in > the sentmails.org as follows: > > -------------------------------------------------------------------------------- > ** 2014-10 October > *** 2014-10-02 Thursday > **** dealing vme register mapping > :mail: > [[notmuch:id:7a97bb93e66a41878edd4c04fa764...@cernfe03.cern.ch][dealing > vme register mapping]] > -------------------------------------------------------------------------------- > > I thought that I can use following > > (add-hook 'message-send-hook '<mysuperfunction>) > > to hook on sending and generate a capture entry. In fact this works > pretty well _EXCEPT_ the link to the mail sent. The org-store-link > cannot apparently store a link to an email, which so far was not sent > (and not received?) because it claims that > > 'org-gnus-store-link: Can not create link: No Gcc header found' > > Hence this is pretty fatal for my diary entry. My question is: is there > any way how to link not-yet-sent/received email as an org-link? Or is > there any way to generate Gcc header before the email is sent and use > this header during sending? Or is > there any other way how to put into my agenda sent emails? > > many thanks > > david