emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] using orgmode to send html mail?


From: Dan Davison
Subject: Re: [Orgmode] using orgmode to send html mail?
Date: Wed, 24 Mar 2010 13:50:53 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux)

"Eric Schulte" <address@hidden> writes:

> Xiao-Yong Jin <address@hidden> writes:
>
>> On Tue, 23 Mar 2010 13:54:39 -0600, Eric Schulte wrote:
>>
>>> Nice to see this topic has come back to life.
>>> I've been playing with my old org-html-mail.el file, and come up with a
>>> much simpler solution, which takes advantage of the mml message mode
>>> functionality with is used in gnus (and I would imagine in some other
>>> Emacs mail clients, but I can't be sure).
>>
>>> Just call this function and either the active region of your message
>>> buffer or the entire body (if no region is active) will be exported to
>>> html using org-mode, and will be wrapped in the appropriate mml wrapper
>>> to be sent as the appropriate mime type.
>>
>
> I've cleaned up the function somewhat, I'll include it immediately
> below by inserting it in a org-mode src_block and then exporting it to
> html, so those with html mail readers should see a nicely fontified
> version of the source code.

This is really nice. I already sent my first HTML-formatted tables to
colleagues with it yesterday. And yes, the email comes up with nicely
formatted elisp in my web browser after hitting 'K H' in gnus.

Dan

>
> (defun org-mml-htmlize (arg)
>   "Export a portion of an email body composed using `mml-mode' to
> html using `org-mode'.  If called with an active region only
> export that region, otherwise export the entire body."
>   (interactive "P")
>   (let* ((region-p (org-region-active-p))
>          (html-start (or (and region-p (region-beginning))
>                          (save-excursion
>                            (goto-char (point-min))
>                            (search-forward mail-header-separator)
>                            (point))))
>          (html-end (or (and region-p (region-end))
>                        ;; TODO: should catch signature...
>                        (point-max)))
>          (body (buffer-substring html-start html-end))
>          (tmp-file (make-temp-name (expand-file-name "mail" "/tmp/")))
>          ;; because we probably don't want to skip part of our mail
>          (org-export-skip-text-before-1st-heading nil)
>          ;; because we probably don't want to export a huge style file
>          (org-export-htmlize-output-type 'inline-css)
>          ;; makes the replies with ">"s look nicer
>          (org-export-preserve-breaks t)
>          (html (if arg
>                    (format "<pre style=\"font-family: courier, 
> monospace;\">\n%s</pre>\n" body)
>                  (save-excursion
>                    (with-temp-buffer
>                      (insert body)
>                      (write-file tmp-file)
>                      ;; convert to html -- mimicing `org-run-like-in-org-mode'
>                      (eval (list 'let org-local-vars
>                                  (list 'org-export-as-html nil nil nil 
> ''string t))))))))
>     (delete-region html-start html-end)
>     (save-excursion
>       (goto-char html-start)
>       (insert
>        (format
>         "\n<#multipart type=alternative>\n<#part 
> type=text/html>%s<#/multipart>\n"
>         html)))))
>
>
>>
>> Thumbs up for this one.  It should be included in
>> org-contrib, probably after taken care of other mail client
>> in emacs?
>>
>
> I have looked somewhat at both VM and Wanderlust, but they appear to use
> their own mime encoding schemes other than mml, so this won't work as-is
> in those mail clients.  That said, assuming they also use simple mime
> encoding strings it should be hard to replace the mml specific mime
> delimiters presented as strings in the above functions with string
> delimiters appropriate for the other mail agents.
>
> also, I have to say I feel bad about publishing code which promotes the
> use of HTML mail.  Generally I feel that everyone would be better off if
> they just used fixed width text email clients.  As a concession to that
> intuition, if this function is called with a prefix argument, it will
> wrap the region (or entire email) as html in <pre></pre> tags ensuring
> that it will be rendered in a fixed-with font no-matter the receivers
> email client, so the following table should actually look like a
> table...
>
> | this table   |   | n | fibb(n) |
> |--------------+---+---+---------|
> | is           |   | 0 |       0 |
> | inside       |   | 1 |       1 |
> | of a pre box |   | 2 |       1 |
> |              |   | 3 |       2 |
>
>
> Best -- Eric
>
>>
>>> So for example this
>>>> 1 |      2 |     3 |
>>>> --------------+--------+-------|
>>>> first column | second | third |
>>
>>> will be exported as this
>>> ━━━━━━━━━━━━━━
>>>        1          2       3   
>>> ──────────────
>>>  first column   second  third 
>>> ━━━━━━━━━━━━━━
>>
>> I use emacs-w3m in gnus, and the table looks great.
> _______________________________________________
> Emacs-orgmode mailing list
> Please use `Reply All' to send replies to the list.
> address@hidden
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode




reply via email to

[Prev in Thread] Current Thread [Next in Thread]