mailto 中文man頁面
NAME
mailto - 簡單多媒體郵件發(fā)送程序
SYNOPSIS
mailto [-a] [-c] [-s] [recipient name(s)]
DESCRIPTION
mailto 程序是一個用于發(fā)送MIME格式的多媒體郵件(MIME格式是Internet 上多媒體郵件格式的推薦標準)的非常簡單的用戶接口. 該程序基本上按照Berkeley的"mail"程序構(gòu)建, 但沒有使用Berkeley mail的任何代碼, 而是完全重新實現(xiàn).
如其名字所示, mailto 僅用于 發(fā)送 郵件, 而不能用來讀取郵件. 在 mailto 中并沒有實現(xiàn)任何Berkeley mail的郵件閱讀功能.
熟悉Berkeley mail 程序郵件發(fā)送命令的用戶可以跳過下一小節(jié), 其內(nèi)容早已為你所熟悉. 更后面的部分的內(nèi)容著重于mailto的增強的功能, 特別是包含復雜文本, 多媒體對象, 以及象希伯來語, 俄羅斯語這樣的非ASCII 碼文本, 正是這些特色使mailto區(qū)別于 Berkeley mail程序.
BASIC USE基本用法
[對于已經(jīng)熟悉Berkeley mail程序的讀者, 本部分可以略過]
mailto的基本操作非常簡單. 如果你只鍵入"mailto", 你會被要求給出一個收件人列表("To:"),一個郵件主題("Subject:"), 以及可能的復件接收者列表("CC:").你也可以在命令行里給出這些參數(shù), "-s"選項用于指定主題, "-c"選項指明復件接受地址. 其它的命令行參數(shù)都被加入到列表中. 下面的命令發(fā)送郵件給nsb和jxr, 郵件主題是"Test message", 附件發(fā)送給kraut:
mailto nsb jxr -s "Test message" -c kraut
某些用戶習慣以逗號分隔地址的郵件閱讀器, 為方便這些用戶, 也可以在每個地址后面跟一個逗號, 但這并不是必須的.
完成這些預備工作后, 你可以開始鍵入你的信件內(nèi)容. 你鍵入的任何東西都被包括在你的信件里, 除了以"~"(tilde)字符開頭的行. 這樣的行被看作TILDE ESCAPE, 用于向郵件程序發(fā)送特殊命令, 我們將馬上討論這種情況.
當你完成了信件, 你只要簡單地鍵入文尾字符 (通常是CONTRAL-D) 就可以發(fā)送郵件給你指定的接收者. 依據(jù)選項設置的不同, 你也可以在單獨一行鍵入"."或者"~."來發(fā)送郵件.
這就是你用mailto發(fā)送郵件所需要知道的. 但是, 要想完全發(fā)揮它的功能, 還需學習一些關(guān)于tilde escape的東西. 在這一部分里, 我們將描述tilde escape最基本的內(nèi)容, 這些內(nèi)容是mailto程序與 Berkeley mail 程序所共有的. 在更后面部分我們將描述最有趣, 同時也是 mailto 所獨有的tilde escape.
如果覺得這部分的內(nèi)容費解的話, 參考mail(1) 程序的手冊頁將有助于理解, 實際上兩者的用戶接口是非常相似的.
任何以tilde 開頭的行都是tilde escape. 該行的第二個字符, 也就是緊跟在tilde 后面的, 就被解釋作對mailto程序的一個特殊命令. mailto和mail所共有的簡單tilde escape命令如下:
~? 顯示tilde escape的幫助信息
~! Shell escape (例如"~! ls")
~~ 輸入以tilde開頭的文本行. tilde "引領"自身, 這樣就可
以輸入一個以tilde開頭的文本行
~. 發(fā)送郵件并退出
~c 將其后內(nèi)容加入到CC列表中(例如"~c nsb")
~d 讀入"~/dead.letter" 的內(nèi)容(或者一個指定的文件, 例如
"~d filename")
~e 用EDITOR環(huán)境變量所指定的編輯器編輯正在撰寫的消息
~h 編輯To, Subject, 以及CC信頭
~p 打印出到目前為止的消息所有內(nèi)容
~q 退出, 并將草稿存入~/dead.letter文件
~r 將指定文件內(nèi)容讀入信件
~s 重新設定subject信頭
~t 將其后內(nèi)容加入到To列表
~v 用VISUAL環(huán)境變量所指定的編輯器編輯正在撰寫的消息
~w 將正在撰寫的消息寫到指定文件(例如"~w filename")
還可以在你的home目錄下的".mailrc" 文件里加入命令, 以此在一定程度上控制mailto程序的行為. 這些命令包括為常用的郵件地址定義別名等. 詳細內(nèi)容可以參看本手冊頁后面以"MAILRC功能簡介" 命名的部分.
BERKELEY MAIL中缺少的增強功能
mail與mailto的主要差別是后者可以生成MIME格式的增強郵件, 該格式是Internet下多媒體郵件格式的建議標準. 然而, mailto的意圖是做成一個 非常簡單 的多媒體郵件生成器, 因而, 也就有很多事情是它所做不到的. 但是, 極度簡單也正是它的優(yōu)點, mailto還極其類似于眾所周知的mail程序, 具有高度的可配置性. 我們將在下面描述mailto使用"mailcap" 文件進行配置的機制.
mailto主要可以在郵件中包含下列內(nèi)容:
1. 使用MIME的"text/richtext" 類型的簡單格式化文本. 這使你可以在你的信件中用下劃線, 粗體字, 斜體字(反相顯示), 置中等諸如此類的手段來突出你的消息.
2. 非文本數(shù)據(jù). Metamail可在任何郵件中包括圖片, 聲音, 以及其他非文本數(shù)據(jù). mailcap配置機制甚至可使得該過程相當友好, 而一個很了解mailto的用戶在沒有設置適當?shù)膍ailcap條目的情況下也可以將非文本數(shù)據(jù)包含在郵件里.
3. 含有非ASCII 字符的文本, 如希伯來語或俄羅斯語等. 到目前 mailto直接支持的只有ISO-8859-*系列的字符集, 這意味著它不能滿足亞洲用戶的要求. 但是, 不能用ISO-8859系列表達的語言仍然可以用非文本數(shù)據(jù)的方式包括在郵件里.
下面將分三個小節(jié)討論各自討論這三個機制.
復雜文本
Mailto使你可以用一些簡單而有效的方法修改你的文本格式. 就象處理其他事情一樣, 這也可以用一些簡單的tilde escape辦到, 列表如下:
~b 開關(guān)粗體模式(開或關(guān)粗體模式)
~i 開關(guān)斜體模式(開或關(guān) 斜體/反相顯示 模式)
~j 改變對齊模式, 特別有:
~jc 將后面的文本置中
~jl 左對齊隨后的文本
~jr 右對齊隨后的文本
~k 決定是否保留信件的"盲"復件.
~n 強制換行(硬斷行)
~u 開關(guān)下劃線模式(開或關(guān)下劃線模式)
~> 左邊緣縮進
~< 取消左邊緣縮進
~<R 右邊緣縮進
~>R 取消左邊緣縮進
~Q 開關(guān)引用模式
~z 將~/.signature的內(nèi)容加為文本簽名
部分內(nèi)容或許需要解釋一下. 粗體, 斜體以及下劃線方式可以分別使用~b, ~i及~u來交替開關(guān). 另外, 對齊可以簡單地在居中, 左對齊以及右對齊三種方式中切換.
要理解"~n"命令, 首先要注意到復雜文本是自動對齊的, 這意味著你鍵入的換行符號只不過是空格符. 這使得文本可以在不同寬度的窗口都很好的展示.(例外的情況是當你鍵入了多個空行, 這時換行符就起作用了.)"~n"命令就可以強制換行. 要記住你可以在任何時候用"~p"命令來看看你的郵件象什么樣子.
通過"~Q"來切換的引用模式用于格式化引用. 比如, 你打開引用模式, 插入了一個文件, 然后退出引用模式, 插入文件的內(nèi)容就作為一個引用. 大多數(shù)的瀏覽器都以縮排方式和(或)"> "居先引領的方式顯示引用, 以此和正文的其它部分區(qū)別開來
最后要說的是, "~z"命令可將你的簽名文件簡單地包括進郵件, 但在格式上顯示出它是簽名. 大多數(shù)復雜文本瀏覽器都會以較小的字體顯示簽名, 或者將它和你信件的其他部分分開些距離.
包含多媒體對象
在mailto郵件里插入多媒體對象的基本命令是"~*". 當你鍵入該命令時, 你會得到一個選項列表, 該列表依賴于你配置的不同而不同 (至于怎么配置該列表稍候?qū)⒂忻枋?. 下面是一個例子:
Please choose which kind of data you wish to insert:
0: A raw file, possibly binary, of no particular data type.
1: Raw data from a file, with you specifying the content-type by hand.
1: An audio clip
2: Data in 'application/andrew-inset' format
3: An X11 window image dump
4: An interactive mail-based survey
這些選項中只有頭兩個(即選項0和1)在所有站點的配置中都出現(xiàn).
如果你選擇了選項0或1, 你會被要求給出含有你想要包括的數(shù)據(jù)的文件. (如果你輸入一些以"|"開頭的命令, 那么你所要包括的就是命令的輸出而不是文件的內(nèi)容.) 如果你選擇選項1, 你將被要求給出正確的"content-type"名字以說明數(shù)據(jù)類型. "content-type"的值是按MIME標準定義的, 典型地都是類型/子類型對的格式, 分別描述粗略的數(shù)據(jù)類型及其詳細格式. 例如, 一個GIF 格式的圖片其 content-type是"image/gif", 而一個簡單 u-law 格式的音頻夾其 content-type是"audio/basic". 對于選項0, 通常所使用的類型是 "application/octet-stream".要得到content-type域的完全文檔, 請查閱推薦標準MIME, RFC1341.
更常見的情形是你所在的是一個配置得很好的站點, 這樣你就無需了解任何有關(guān)content-type的東西----你選擇的將是一個非零項. 在這些情況下, 會運行一個程序使你可以處理給定類型的數(shù)據(jù). 該進程的用戶接口這里不描述, 因為這些接口通常都是與站點相關(guān)的, 但這樣的程序通常都設計得即使是新手也能很容易就搞定.
mailto中另外一個用于包括多媒體對象的命令是"~z"命令. 該命令可以用于包括多媒體簽名文件, 這些簽名文件應該是完全MIME格式的文件, 其頂部有一個content-type頭域.
用MAILCAP文件作配置
注意: 本部分是寫給那些想要擴展mailto的能力, 使其能輕易包括新文件類型的用戶. 在一個管理得很好的站點上用戶是不太可能需要經(jīng)常做這些的, 管理員應該已經(jīng)替你做好了.
要得到更完全的mailcap 機制的說明, 可以參考metamail(1) 的手冊頁. 這里只是簡略給出mailcap 文件中與mailto程序配置相關(guān)的方面.
首先, mailto依靠一個搜索路徑去尋找mailcap 文件(組), 以其內(nèi)容為參考. 不象大多數(shù)的路徑搜索, mailto總是讀完它搜索路徑中 所有的 mailcap 文件. 這就是說, 它將一直遍歷完所有mailcap 文件, 搜集所有的mailcap 條目. 缺省的搜索路徑是
$HOME/.mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap
可以通過設置MAILCAPS環(huán)境變量來覆蓋該設置. 要注意的是mailto 實際上并不解釋搜索路徑中象$HOME這樣的環(huán)境變量, 也不對"~"語法作解釋.
mailcap 文件的語法非常簡單, 至少與termcap 文件相比是這樣. 以"#" 開頭的行都被看作注釋, 空的行被忽略. 此外, 每行單獨對一個content type定義一個mailcap 條目. 當有很長的行的時候, 就放一個反斜杠字符\ 在行末以續(xù)行.
每個mailcap 條目都包含有一個content-type說明, 以及一個在郵件被讀取時執(zhí)行的命令(典型是由metamail(1) 程序執(zhí)行), 可能的話還有一個任選的"flag"集. mailto程序僅僅處理mailcap條目中 "compose", "composetyped", "edit"這三個任選的flag及其組合. compose 標志為mailto指明處理給定格式數(shù)據(jù)的程序, 而edit標志通知mailto如何以給定格式編輯數(shù)據(jù). 下面的mailcap 條目給出了處理和編輯音頻數(shù)據(jù)的一個例子:
audio/basic; showaudio %s; compose=audiocompose %s; edit=audiocompose %s; description="An audio clip"
"composetyped"標志很象compose,除了其輸出假定是MIME格式, 還包括至少一個content-type, 如果必要的話, 還有一個content- transfer-encoding頭域. 如果各種信息需要通過content-type中的參數(shù)轉(zhuǎn)達的話, composetyped就是必不可少的了.
可選的"description"域用于組成mailto響應"~*"命令而打印出來的提示符, 排字程序使用該格式排組數(shù)據(jù), 而編輯程序則使用該格式編輯數(shù)據(jù). 在這兩種情況的中的任一種, 任何"%s"的出現(xiàn)都會以要排組或要編輯的文件名替代. 如果在排字命令中沒有"%s", 這實際上就等價于在排字命令的末尾附加"> %s".
請注意mailcap 文件中各項出現(xiàn)的順序是極其嚴格的. metamail程序用第一個匹配的mailcap條目來 展示 數(shù)據(jù). 另一方面, 對 每個 帶有"compose" 命令的mailcap條目, mailto也給用戶提供了一個替代方案. 但要注意到mailto使用了mailcap 條目的content-type 來組成其content-type頭. 因而, 排字和編輯命令在mailcap的通配條目中是無需指明的. 如果你有一個可以展示許多不同子類型的程序, 你可能要對基本類型的展示和排組分開做條目.
image/*; showpicture %s
image/gif; showpicture %s; compose="xwd -frame | xwdtoppm | ppmtogif"; description="An X11 window image dump in GIF format"
image/x-xwd; showpicture %s; compose="xwd -frame"; description="An X11 window image dump in XWD format"
要得到更多mailcap 文件的格式和語法信息, 請參考 metamail(1) 手冊頁里的條目.
非ASCII語言的文本
Mailto為在郵件中使用非ASCII 字符集提供了初步的支持. 目前, mailto支持ISO-8859系列的字符集, 這些字符集具有一個很好的特性, 就是它們都是ASCII的完全超集. 這就是說, 所有ISO-8859字符集的ASCII 字符都是一致的. 在其中任何一個字符集你都可以象通常一樣使用所有ASCII字符.
但是mailto缺省認為你使用的是US-ASCII字符集, 而不允許包含非 ASCII字符. 要想通知mailto你正在使用的終端或終端窗口可以支持ISO-8859字符集, 你可以使用-a開關(guān)或者MM-CHARSET環(huán)境變量. 例如, 鍵入 "mailto -a ISO-8859-8" 就可以通知mailto你的終端支持ISO-8859-8, ASCII+Hebrew字符集. 如果你是在一個確實支持該字符集的終端上,這就是你所要使用的方法. 如果你是在一個諸如X11之類的窗口系統(tǒng)上, 而你也需要確保你的終端模擬器使用的是正確的字體, 這樣如果你有一個名為"heb6x13" 的字體, 就可以通過命令"xterm -fn heb6x13 -e mailto -a iso-8859-8" 打開一個兼容的xterm 和mailto來發(fā)送英語與希伯來語混雜的郵件. 通常應該使得所安裝的字體具有和字符集一樣的名字, 特別是在你使用 shownonascii(1) 的時候.
一旦你使mailto以正確的字符集開始, 有兩個辦法可以使其進入到非ASCII 字符集里. 第一個也是到目前為止最容易的一個, 就是使用標記了的鍵, 這要求你所在物理終端使用那些字符集中的一個. 然而, 如果你象大多數(shù)X11用戶那樣使用標準的ASCII鍵盤, 就需要一些別的辦法來進入到非ASCII 字符里. mialto有一種八位模式來達成該任務.在八位模式里, 你鍵入的所有可打印字符都帶有第八位, 這樣就可以將它們轉(zhuǎn)化成非ASCII 字符. 可以用tilde escape "~+"來進入八位模式, 而用"~-"離開. 要查看從你的鍵盤到八位模式字符的映射, 只要使用命令"~?+".
最后, ISO-8859系列支持的某些語言, 如希伯來語和阿拉伯語, 它們是從右到左而不是從左到右的順序. 為了使文本編輯變得容易, mailto設定了一種"從右到左"模式, 該模式可以用"~^"命令開關(guān). 要更方便, 還可以用單獨一個命令"~S"(Semitic模式)來同時開關(guān)從右到左和八位兩個模式.
TILDE ESCAPES總表
為便于查閱, 這里列出了mailto程序中tilde escape的全部摘要:
~? 顯示tilde escape的幫助信息
~! Shell escape
~~ 輸入以一個tilde字符開頭的文本行
~. 發(fā)送郵件并退出
~/ 設定最大報文, 超過該值報文就被分成多個部分
~?+ 顯示擴展(八位)字符的幫助信息
~> 左邊緣縮進
~< 取消左邊緣縮進
~<R 右邊緣縮進
~>R 取消右邊緣縮進
~+ 為使用非ASCII字符而進入八位模式
~- 退出八位模式(返回到ASCII)
~^ 開關(guān) ~* 將非文本數(shù)據(jù)(圖片, 聲音等.)加入為一個新的MIME部件
(try it!)
~b 切換粗體模式
~c 添加到CC列表中
~d 從dead.letter(或指定的文件, ~d filename)中讀取數(shù)據(jù)
~e 編輯所撰寫的消息
~h 編輯郵件頭部
~i 開關(guān)斜體模式
~j 變更對齊(~jc = 置中, ~jl = 左對齊, ~jr = 右對齊.)
~n 強制換行(硬斷行)
~p 打印出到目前為止的信件所有內(nèi)容
~q 退出, 并將內(nèi)容保存到dead.letter文件
~Q 開關(guān)引用模式
~r 將指定文件的內(nèi)容讀入信件
~s 重新設定主題
~S 開關(guān)Semitic模式(從右到左以及八位模式)
~t 加入到To列表中
~u 開關(guān)下劃線模式
~v 以可視化編輯器編輯
~w 將消息寫到指定的文件
~z 將~/.signature的內(nèi)容加做文本簽名.
~Z 將~/.signature的內(nèi)容加做非文本(MIME格式)簽名.
MAILRC功能簡介
Home目錄下的.mailrc文件用于定制Berkeley mail程序. mailto 程序也對其中部分定制信息敏感, 雖然不是全部. 特別地, 你可以使用.mailrc文件設置如下變量, 以影響mailto的行為 (通過"set 變量名"或者"unset 變量名"):
askcc -- 控制是否征詢CC列表
dot -- 控制是否將單獨一行的句號解釋為郵件結(jié)束
ignore -- 控制是否忽略斷行
verbose -- 控制/usr/lib/sendmail輸出的冗余
quiet -- 控制mailto程序輸出的冗余
keepblind -- 控制是否保留郵件的"盲"復件
commasonly -- 決定是否將空格符解釋為郵件地址分隔符號.
為與BSD mail兼容, 缺省是這么解釋空格的,
但commasonly選項使mailto可以更像一個現(xiàn)代
的Inertnet mailer.
該文件還實現(xiàn)了的一個功能就是個人郵件別名. 比如, 你有一個朋友, 而他(她)有一個長得可怕的郵件地址, 你可以在你的.mailrc 文件里添加一行, 用一個比較簡短友好的別名指向該地址:
alias boygeorge George.Herbert.Walker.Bush%white-house.uucp@nsf-relay.com
mailto以與Berkeley mail 相兼容的方式來實現(xiàn)別名特色. 此外, mailto還知道如何讀取CMU's Andrew系統(tǒng)所使用的".AMS_aliases" 別名文件. 這樣Andrew的用戶就不必為要同時使用Andrew和mailto 而不得不維護兩個不同的別名文件.
與BERKELEY MAIL的其他差異
雖然mailto程序是以Berkeley mail為藍本構(gòu)建的, 它們的用戶接口卻不是毫無差別. 下面是除多媒體增強之外的其它主要差異, 習慣于Berkeley mail 程序的用戶常常被這些差異弄糊涂.
地址分隔: Berkeley mail里的地址是以空格分隔的, 這被郵件用戶們深惡痛絕. 為保持向后兼容性, mailto也保持了這一格式, 但是只要是正常的人就會用逗號來代替空格.
換行語法: 不像Berkeley mail, mailto里單個斷行通常被看作是"軟"的. 這意味著當接收者看到你的郵件的時候, 信件因為自動對齊看起來將是滿滿當當?shù)? 直接的斷行可以用"~n"命令添加, 而多個連續(xù)的斷行符也可以得到理想的效果. 倒過來, 任何以空格或 tab 字符開始的行都被看作以一個斷行領先.
包含dead.letter文件的內(nèi)容: ~d命令用于將"dead.letter"文件內(nèi)容包含在當前郵件中. Mailto對該功能的實現(xiàn)與mail相比有兩點不同: 首先, 信息是以封裝形式而不是純文本形式包含在郵件里. 雖然這有時有些不方便, 但它允許將多媒體dead.letter 文件完整地取回. 其次, mailto中的"~d"命令可以帶一個參數(shù), 就是用于取代缺省的"~/dead.letter" 文件的文件名.
與Sun的版本不一致的地方: Sun Microsystems(毫無疑問許多別的廠商的版本是作者有所不熟識的)在幾個地方增強了Berkeley mail的命令, 而其中一些是與mailto不兼容的. 特別地, 至少Sun 版本中的"~b", "~i", 及"~<"命令是與mailto中的命令不一致.
~p失敗的潛在可能: 在標準的Berkeley mail程序里, 難以想象 "~p"命令竟然會失敗. 在mailto里面, ~p依靠調(diào)用metamail(1)程序工作, 如果metamail沒有列入用戶搜索路徑里, ~p將會失敗.
擴展別名搜索: mailto程序既象Berkeley mail一樣讀取.mailrc 文件中的別名, 也象CMU's Andrew消息報文系統(tǒng)一樣讀取
編輯行為的變化: ~e和~v命令, 雖然都用于編輯消息, 但如果郵件中含有非文本部分的話, 它們在mailto中的行為是不一樣的. 在這樣的情形下, 各部分是按順序分開編輯的, 這使得用戶不可能在偶然的情況下弄亂各部分的界限. 此外, 如果一個對于給定數(shù)據(jù)類型的mailcap 條目包含有"edit"域, 用戶會面臨選擇是以這里給定的程序編輯還是以通常的文本編輯器編輯. 大多數(shù)情況都是要選擇使用一個結(jié)構(gòu)化的編輯器或者選擇編輯原始數(shù)據(jù)流.
大郵件行為的變化: Mailto用splitmail(1)程序來發(fā)送你的郵件. 當郵件較大的時候, 就被分成一系列遵循MIME的小文件, 這樣MIME 的讀取器在收到郵件時就可以自動重組. 缺省是所有超過100K字節(jié)的郵件都被分裂, 但可以通過設置SPLITSIZE環(huán)境變量來控制.要了解更多信息, 可以參看splitmail(1)的手冊頁.
新的-r命令行選項: 在標準Berkeley mail中是沒有-r命令行選項的.
SUMMARY OF OPTIONS選項總覽
-a <charset> -- 指明要使用的替代字符集. 最好是你的終端實際在用的. 目前必須是屬于iso-8859字符集系列.
-c name -- 指明CC域的名字. 如果你想要包括多個名字, 就必須用引號把名字括起來, 比如 -c "name1, name2, name3".
-r message-id -- 指明構(gòu)造In-Reply-To頭域所用message-id.
-s subject -- 指明郵件主題. 如果主題中包括空格, 必須用雙引號括起來.
環(huán)境變量
- MAILCAPS
- 該變量用于覆蓋mailcap 文件的缺省搜索路徑.
- PAGER
- 如果設置了該變量, 就取代"more"作為你的解釋器的翻頁程序名
- MM_CHARSET
- 該變量可以取代-a開關(guān), 將你的終端或模擬終端上實現(xiàn)的非US-ASCII字符集通知mailto.
- TERM
- 該變量將你的終端類型通知mailto. 再配合termcap(5)工具, 就可以確定如何在你的終端上實現(xiàn)粗體字符, 反相顯示, 下劃線等格式元素
- EDITOR
- 如果你以~e命令請求編輯你正在撰寫的郵件, 該變量就指定mailto所使用的編輯工具.
- VISUAL
- 如果你以~v命令請求編輯你正在撰寫的郵件, 該變量就指定mailto所使用的可視化編輯工具
SEE ALSO
metamail(1), mmencode(1), richtext(1), audiocompose(1), getfilename(1), mailto-hebrew(1), splitmail(1), shownonasci(1)