Eric Schulte wrote:
>>
>> Thinking functional this might be the first function of
>> org-mail-htmlize[1]: Create a html representation of message body if
>> necessary or appropriate.
>>
>Oh, so this would be a slightly different issue,
>So this function could be run *every* time an email is sent. I agree
>that in those cases running on the entire message would be the right way
>to go.
Right, this would be nice for people who are obliged to send out html
messages. If this is turned on org-mime should display the string
"HTML" in the mode line. In the WL it's done this way:
,----
| (defun dmj/wl-send-html-message-draft-init ()
| "Create buffer local settings for maybe sending html message."
| (unless (boundp 'dmj/wl-send-html-message-toggled-p)
| (setq dmj/wl-send-html-message-toggled-p nil))
| (make-variable-buffer-local 'dmj/wl-send-html-message-toggled-p)
| (add-to-list 'global-mode-string
| '(:eval (if (eq major-mode 'wl-draft-mode)
| dmj/wl-send-html-message-toggled-p))))
`----
This function is hooked into mime-edit mode and set's a buffer local
variable that indicates "html message mode" and is displayed in the
mode line.
>>
>> 2/
>>
>> The second function: Attach external files that are referenced in the
>> message. This might be useful even if you don't send out html
>> messages: All external files are stashed into a multipart/mixed
>> container along with a Content-Id: header field.
>>
>> Than all references are changed accordingly to point to the attached
>> files:
>>
>> - for html use src/href with the cid: prefix
>>
>> - for text: good question. Maybe replace occurences of the file
>> with a customizable string saying: "see attached file foo.bar".
>>
>I'm not sure I understand, I'm currently happy with my mail agent's
>method of attaching files to email, what else would this use of the
>function add aside from a new attachment syntax.
What I meant was: Suppose you write a document in Org with references
to external files (images etc.). If finished you'd like this document
to a fellow by mail including all external files. So this function
collects all these files, and maybe converts the message body to html,
fires up Gnus/WL with a new message and inserts something like
< #multipart type="alternate">
< #part type="text/plain"> ...plain text body...
< #part type="text/html"> ...html body...
< #/multipart>
< #multipart type="mixed">
< #part type="image/png"> image1.png
< #part type="image/png"> image2.png
...
< #/multipart>
That is: The original document including all external files -- and all
references in the original file are replaced by references to the
attachments.
Original
,----
| ...
| As you can see in [[file:figure1.png][Figure 1]], cats
| *are* the cutest animals on earth.
| ...
`----
"figure1.png" will be attached and the reference adjusted to the
attachment.
HTML
,----
| As you can see in Figure 1,
| cats are the cutest animals on earth.
`----
Plain
,----
| As you can see in Figure 1 (see attached file: figure1.png), cats
| *are* the cutest animals on earth.
`----
>> 4/
>>
>> Detecting the plain text body should not just stop on end of buffer
>> but also on the first occurence of a MIME delimiter: Maybe the user
>> already added a attachment.
>>
>Good point, one open question here is how to treat that mime border, I'm
>thinking it may be best to simply stash it in a
>#+BEGIN_HTML
>original mime content
>#+END_HTML
>block, so that it survives the Org-mode export unscathed, however maybe
>it's simpler just to end the html alternative part at the first mime
>border.
Yes, it is simpler. Simply search for the end of the message body
with the condition: either eobp or MIME delimiter.
For example when in mml (line 92ff in org-mime.el):
,----
| (html-end (or (and region-p (region-end))
| (if (not (re-search-forward "^<#part\\|^<#multipart" nil t))
| (point-max)
| ;; one line up
| (end-of-line 0)
| (point))))
`----
With this you can even catch the signature that is separate by "--
\n". If re-search-forward finds an attachment the body ends right
before. Small glitch: This code assumes MIME delimiters start at the
beginning of a line ("^").
-- David
--
OpenPGP... 0x99ADB83B5A4478E6
Jabber.... dmjena@jabber.org
Email..... dmaus@ictsoc.de