Attach file for html mail

上次说到可以用markdown配合gnus来发HTML格式的邮件,可是当需要添加附件的时候,上述方法就不起作用了。附件部分的信息被当成邮件的正文转为HTML格式。解决方法是当没有附件时自动将邮件正文转为HTML格式,否则手工转换。实现方式如下:

(setq markdown-command "markdown")

(defun mimedown-region (beg end)
  (interactive "r")
  (save-excursion
    (let ((orig-txt (buffer-substring-no-properties beg end)))
      (shell-command-on-region beg end markdown-command nil t)
      (insert "<#multipart type=alternative>n")
      (insert orig-txt)
      (insert "<#part type=text/html>n<html>n<head>n<title> HTML version of email</title>n</head>n<body>")
      (exchange-point-and-mark)
      (insert "n</body>n</html>n<#/multipart>n"))))

(defun mimedown-message-body ()
  (interactive)
  (save-excursion
    (message-goto-body)
    (mimedown-region (point) (point-max))))

(add-hook 'message-mode-hook
   (lambda ()
     (add-hook 'message-send-hook 'mimedown-message-body)))

(defun remove-message-send-hook ()
  (interactive)
  (remove-hook 'message-send-hook 'mimedown-message-body))

(defadvice mml-attach-file (after remove-mimedown-message-body
      (file &optional type description disposition))
  (remove-message-send-hook))

(ad-activate 'mml-attach-file)

手工转换使用命令`markdown-region',而message-mode-hook和mml-attach-file(添加附件的命令)的after advice分别负责HTML自动转换的打开和关闭。使用advice是因为mml-attach-file没有hook可以使用。

No right Alt key on PuTTY

Cygwin对国际化的支持有限,比如当SSH到另一台语言环境为zh_CN.UTF-8的linux机器上时,中文没法显示。解决方法是使用Cygwin之外的工具,比如PuTTY。我下载了Portable PuTTY,设置好对UTF-8的支持,然后SSH过去,中文完美显示出来。解决了语言问题的最大好处是可以使用GNU Screen的attach/detach功能。

不幸的是,另一个障碍出现了,PuTTY不认识右侧的Alt键。这对我来说是几乎不可以接受的,尽管在命令行下使用右侧Alt的机会很少,只有Alt+F、Alt+B或Alt+D等,但使用非常频繁。难道又要回到过去那种用左手搞定两个键的习惯吗?太难了,曾经沧海难为水啊!