这是命令 mhbuildmh,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
mhbuild - 翻译 MIME 合成草稿
概要
建造 文件 [-汽车 | -noauto[-list | -nolist[- 真实大小 | -norealsize[标题 |
-无标题[-指令 | -无指令[-rfc934模式 | -norfc934模式[-内容ID |
-无内容ID[-冗长 | -浓浓的[-性格 | -无倾向[-检查 |
-没有检查[-标头编码 编码算法 | -自动标题编码[-最大编码
行长[-距离[-版[-救命]
商品描述
这个 建造 命令会将 MIME 合成草稿转换为有效的 MIME 消息。
建造 创建 RFC 2045 到 RFC 2049 中指定的多媒体消息。这包括
RFC 2047 指定的邮件头编码,以及 MIME 的编码
RFC 2231 中指定的参数。
如果将合成文件的名称指定为“-”,则 建造 会接受
标准输入上的合成草稿。 如果此输入的翻译成功,
建造 将新的 MIME 消息输出到标准输出。 这个论点必须是
命令行上的最后一个参数。
否则,如果文件参数为 建造 是有效合成文件的名称,并且
翻译成功, 建造 将用新的 MIME 替换原始文件
信息。 它将重命名原始文件以“,”字符开头并以
字符串“.orig”,例如,如果您正在编辑文件“draft”,它将被重命名为
“,draft.orig”。 这使您可以轻松恢复 建造 输入文件。
上市 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 内容
这个 -list 开关告诉 建造 列出与 MIME 关联的目录
创建的消息。
这个 标题 开关指示应在上方显示单行横幅
清单。 这 - 真实大小 开关告诉 建造 评估“本机”(解码)格式
列出之前的每个内容。 这提供了准确的计数,但代价很小
延迟。 如果 -冗长 开关存在,则列表将显示任何“额外”
消息中存在的信息,例如“Content-Type”标题中的注释。
如果 -性格 开关存在,则列表将显示任何相关信息
来自“Content-Disposition”标题。
简体 附件 接口
对于希望简单地将文件附加到文本内容的用户, 建造 将扫描
“附加”标题的组合文件。 “附加”标头包含一个文件名,该文件名将
使用正常的 MIME 封装规则附加到邮件中。 允许一个文件名
每个“Attach”标头,但允许多个“Attach”标头作为组合文件。
这些文件将附加在任何其他 MIME 内容之后,包括指定的任何内容
by 建造 指令(见下文)。 看 提交(1) 了解更多详情。
翻译 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 组成成分 文件
建造 本质上是一个过滤器,用于帮助组合 MIME 消息。 建造 将
转换一个 建造 “组合文件”转换为有效的 MIME 消息。 一种 建造 “作品
文件”只是一个包含纯文本的文件,其中散布着各种 建造
指令。 当这个文件被处理 建造,各种指令将是
扩展为适当的内容,并将根据 MIME 标准进行编码。
然后可以通过电子邮件发送生成的 MIME 消息。
的正式语法 建造 组合文件在本文档的末尾定义,
但这种格式背后的想法并不复杂。 基本上,身体包含一个或
更多内容。 一个内容由一个指令组成,用“#”表示
一行的第一个字符; 或者,纯文本(一行或多行文本)。 延续
字符“\”可用于在多行中输入单个指令,例如,
#图像/png \
/home/foobar/junk/picture.png
有五种指令: “type”指令,命名类型和子类型
内容; “external-type”指令,它也命名了类型和子类型
内容; “message”指令(#forw),用于转发一条或多条消息;
“begin”指令(#begin),用于创建多部分内容; 和
“on/off/pop”指令(#on、#off、#pop)控制是否有任何其他指令
很荣幸。
这个 -指令 开关允许控制 mhbuild 是否会遵守任何
“#”-指令。 这也可能受到 #on 或 #off 指令和 #pop 的影响,
它将处理状态恢复到最近的 #on 或 #off 之前的状态。
(当然,#on、#off 和 #pop 指令总是受到尊重。)这允许包含
看起来像 mhbuild 指令的纯文本,不会导致错误:
#离开
#包括
printf("你好,世界!);
#流行音乐
目前#on/off/pop 指令的堆栈深度是 32。
“type”指令用于直接指定内容的类型和子类型。 你
只能以这种方式指定离散类型(不能指定类型 multipart 或
带有此指令的消息)。 您可以选择指定包含的文件的名称
“本机”(解码)格式的内容。 如果此文件名以“|”开头
字符,则它表示要执行的命令,其输出被相应地捕获。
例如,
#audio/basic |raw2audio -F < /usr/lib/sound/giggle.au
如果没有给出文件名, 建造 将在用户的个人资料中查找信息以
确定应如何组合不同的内容。 这是通过
咨询组合字符串,并在下执行它 / bin / sh的, 标准输出
设置为内容。 如果 -冗长 开关给出, 建造 将回显任何命令
用于以这种方式创建内容。
组合字符串可能包含以下转义:
%a 从指令插入参数
%f 插入包含内容的文件名
%F %f,并且标准输出没有被重定向
%s 插入内容子类型
%% 插入字符 %
首先, 建造 将查找以下形式的条目:
mhbuild-撰写- /
确定用于撰写内容的命令。 如果没有找到这个 建造 将
寻找表格的条目:
mhbuild-撰写-
确定组合命令。 如果没有找到这个 建造 会抱怨。
一个示例条目可能是:
mhbuild-compose-audio/basic: 记录 | raw2audio -F
因为像这样的命令会有所不同,具体取决于所使用的显示环境
登录,不同内容的组合字符串应该放在文件中
由指定 $MH构建 环境变量,而不是直接在您的用户配置文件中。
“external-type”指令用于提供对内容的 MIME 引用,而不是
而不是封闭内容本身(例如,通过指定 ftp 站点)。 因此,
而不是像类型指令那样提供文件名,外部参数是
提供。 这些看起来像常规参数,因此必须相应地将它们分开。 为了
例,
#@应用程序/八位字节流; \
类型=焦油; \
转换=压缩\
[这是 nmh 分布] \
{依恋; 文件名="nmh.tar.gz"} \
名称="nmh.tar.gz"; \
目录=“/pub/nmh”; \
站点="ftp.math.gatech.edu"; \
访问类型=匿名FTP; \
模式=“图像”
您必须给出一个描述字符串来将内容参数与外部参数分开 -
参数(尽管此字符串可能为空)。 此描述字符串由
将其括在“[]”中。 一个处置字符串,出现在“内容处置”中
标头,可能出现在可选的“{}”中。
这些参数的格式为:
访问类型=通常 匿名ftp, 邮件服务器或 网址
名称=文件名
权限=只读或读写
站点=主机名
目录=目录名(可选)
模式=通常 ASCII or 图片 (可选)
大小=八位字节数
服务器=邮箱
主题=要发送的主题
body= 发送检索的命令
url= 内容的 URL
一个最小的“外部类型”指令 网址 访问类型 将如下所示:
#@application/octet-stream [] access-type=url; \
网址="http://download.savannah.gnu.org/releases/nmh/nmh-1.5.tar.gz"
任何长 URL 都将根据 RFC 2231 规则进行包装。
“消息”指令 (#forw) 用于指定一条消息或一组消息
包括。 您可以选择指定文件夹的名称以及要发送的邮件
转发。 如果未指定文件夹,则默认为当前文件夹。 类似地,如果一个
没有给出消息,它默认为当前消息。 因此,消息指令是
类似的 前进 命令,除了前者使用 MIME 规则进行封装
而不是 RFC 934 中指定的那些。例如,
#forw +收件箱 42 43 99
如果包含单个消息,它将作为类型的内容直接包含
“消息/rfc822”。 如果您包含多个消息,则 建造 将添加内容
类型为“multipart/digest”,并将每条消息作为此内容的子部分包含在内。
如果您使用此指令包含多个消息,您可以使用
-rfc934模式 转变。 此开关将指示 建造 应该尝试利用
MIME 封装规则的方式是创建的“多部分/摘要”是
(主要)与 RFC 934 中指定的封装兼容。如果给定,则 RFC 934
合规的用户代理应该能够在接收时突发消息——前提是
被封装的消息本身不包含封装的消息。 这
这种方法的缺点是封装是通过放置一个额外的
每条消息正文末尾的换行符。
“begin”指令用于创建多部分内容。 使用“开始”时
指令,您必须在开始和结束对之间指定至少一个内容。
#开始
这将是一个只有一个部分的多部分。
#结束
如果您在组合草案中使用多个指令, 建造 会自动
将它们封装在多部分内容中。 因此“开始”指令只是
如果您希望使用嵌套的多部分,或创建包含的多部分消息,则是必要的
只有一部分。
对于所有这些指令,用户可以包括内容的简要描述
在“[”字符和“]”字符之间。 此说明将复制到
处理指令时的“Content-Description”标头。
#forw [来自 Bob 的重要邮件] +bob 1 2 3 4 5
类似地,可以选择在“{”和“}”字符之间提供处置字符串;
处理指令时,它将被复制到“Content-Disposition”标头中。
如果提供的处置字符串不包含文件名参数,并且
指令中提供了文件名,它将被添加到“Content-Disposition”
标题。 例如,以下指令:
#文本/普通; 字符集=iso-8859-1 <>{附件} /tmp/summary.txt
创建这些消息部分标头:
内容类型:文本/纯文本; 字符集=“iso-8859-1”
Content-Disposition:附件; 文件名=“摘要.txt”
默认情况下, 建造 将为每个指令生成一个唯一的“Content-ID:”,对应的
到每个消息部分; 但是,用户可以通过使用“<”定义 ID 来覆盖它
和“>”字符。 这 -无内容ID 开关禁止创建所有“内容 ID:”
标头,即使在消息的顶层。
通常情况下 建造 将根据内容选择合适的 Content-Transfer-Encoding
和 MIME 内容类型。 但是,您可以在 建造 指令
指定“*”和编码。 可接受的编码值为“8bit”、“qpρq(对于
引用可打印)和“b64”(用于 base64 编码)。 需要注意的是,不受欢迎的
如果为二进制内容选择 8 位或带引号的可打印,则可能会出现结果,因为
Unix 行尾与邮件传输使用的行尾之间的转换
系统。
除了各种指令之外,还可以存在纯文本。 明文收集,
直到找到一条指令或草案用完为止,并以此形成文本
内容。 如果明文必须在一行的开头包含一个“#”,只需双倍
它,例如,
##发送时,此行将仅以一个开头#
如果你想在指令之前结束明文,例如,有两个明文
内容相邻,只需插入包含单个“#”字符的行,例如,
这是第一个内容
#
这是第二个
最后,如果明文以以下形式的一行开头:
内容描述:文本
那么这将用于描述明文内容。 你必须遵循这条线
在开始文本之前有一个空行。
默认情况下,纯文本被捕获为文本/纯内容。 您可以通过以下方式覆盖它
以“#<”开始明文,后跟内容类型规范。 例如,
例如,
#
此内容将被标记为文本/丰富
#
并且此内容将被标记为 text/plain
#
#
并且此内容将被标记为 application/x-patch
请注意,如果您使用“#<”纯文本形式,则内容描述必须在
标识明文内容类型的同一行。
在撰写文本内容时,您可以通过添加相关字符集来表示
指令的“字符集”参数。
#
如果文本内容包含任何 8 位字符(设置了高位的字符)并且
字符集没有如上指定,则 建造 将假设字符集是
标准给出的类型 当地(1)环境变量。 如果这些环境
变量未设置,则字符集将被标记为“x-unknown”。
如果文本内容仅包含 7 位字符且字符集未指定为
上面,那么字符集将被标记为“us-ascii”。
默认情况下,设置高位的文本内容使用 8 位编码
内容传输编码。 如果文本的行长于值 -最大编码
(默认为 78)然后使用带引号的可打印编码对文本进行编码。
这个 -标头编码 开关将指示在编码任何消息时使用哪种算法
包含 8 位字符的标头。 有效的论据是 base64 对于基于 64
编码和 引 用于引用的可打印编码。 这 -自动标题编码 切换将
指示 建造 自动选择导致更短编码的算法
字符串。
将所有这些放在一起,这是一个更复杂的消息草稿的示例。 这
以下草案将扩展为包含五个部分的多部分/混合消息:
转到: [email protected]
抄送:
主题:听我说!
--------
第一部分将是文本/纯文本
#
第二部分将是文字/丰富
#
这第三部分将是文本/纯文本
#audio/basic [傻笑] \
|raw2audio -F < /usr/lib/sounds/giggle.au
#image/gif [foobar 的照片] \
/home/foobar/lib/picture.gif
诚信 确保
If 建造 被赋予 -检查 开关,然后它还将完整性检查与
每个“叶子”内容。 这将向内容添加一个 Content-MD5 标头字段,以及
未编码内容的 md5 总和,根据 RFC 1864。这可能被接收方使用
消息来验证消息的内容在传输中没有改变。
转让 编码
后 建造 通过解析指令构造新的 MIME 消息,包括文件,
等等,它扫描消息的内容以确定使用哪种传输编码。
它将检查 8 位数据、长行、行尾空格以及与
多部分边界。 然后它将选择适合每个的传输编码
内容类型。
如果完整性检查通过使用 -检查 开关,
然后 建造 将使用传输编码对每个内容进行编码,即使是内容
仅包含 7 位数据。 这是为了增加内容不存在的可能性
在运输过程中发生了变化。
调用中 建造
通常情况下, 建造 被调用 现在怎么办 程序。 此命令将期望正文
草稿格式为 建造 组合文件。 一旦你完成了这个
使用命令输入文件,例如 补偿, 代表或 前进,你调用 建造 在“什么
现在”提示
现在怎么办? 哑剧
在发送草稿之前。 这会导致 现在怎么办 执行 建造 翻译
合成文件转换为 MIME 格式。
通常调用是错误的 建造 已经是 MIME 格式的文件。 这 -汽车
开关会导致 建造 如果输入文件已具有有效的 MIME,则无错误退出
标题。 指某东西的用途 -汽车 还使 -无指令 开关。
最后,您应该考虑将此行添加到您的个人资料中:
lproc:显示
这样,如果你决定 名单 调用后 哑剧, 命令
现在怎么办? 列表
将按您的预期工作。
这个 -距离 开关旨在由 DIST. 它会导致 mhbuild 无法生成
合成文件中的任何 MIME 标头(例如“MIME-Version”或“Content-Type”),但
它仍然会根据 RFC 2047 对消息头进行编码。
用户 环境
因为所处的环境 建造 操作可能因用户而异, 建造 将要看
对于环境变量 $MH构建. 如果存在,则指定一个名称
应阅读的其他用户配置文件。 因此,当用户登录特定
机器,此环境变量应设置为引用包含定义的文件
对那台机器有用。
最后, 建造 将尝试咨询
/etc/nmh/mhn.defaults
如果它存在。
请参阅“配置文件查找” mh配置文件(5) 对于配置文件搜索顺序,以及如何重复
条目被处理。
句法 of 组成成分 档
以下是a的正式语法 建造 “组合文件”。
正文 ::= 1*(内容 | 停产)
内容 ::= 指令 | 纯文本
指令 ::= "#" type "/" 子类型
0*(";" 属性 "=" 值)
[ “(“ 评论 ”)” ]
[ "<" id ">" ]
[ “[“ 描述 ”]” ]
[“{”处置“}”]
[ "*8 位" | "*qp" | “*b64”]
[ 文档名称 ]
EOL
| "#@" 类型 "/" 子类型
0*(";" 属性 "=" 值)
[ “(“ 评论 ”)” ]
[ "<" id ">" ]
[ “[“ 描述 ”]” ]
[“{”处置“}”]
[ "*8 位" | "*qp" | “*b64”]
外部参数
EOL
| “#前进”
[ "<" id ">" ]
[ “[“ 描述 ”]” ]
[“{”处置“}”]
[ "+"文件夹] [ 0*msg ]
EOL
| “#开始”
[ "<" id ">" ]
[ “[“ 描述 ”]” ]
[“{”处置“}”]
[ “选择”
| “平行线”
| 别的东西]
EOL
1*身体
“#end”停产
明文 ::= [ "内容描述:"
说明停产停产]
1*线
[“#”停产]
| "#<" 类型 "/" 子类型
0*(";" 属性 "=" 值)
[ “(“ 评论 ”)” ]
[ “[“ 描述 ”]” ]
[“{”处置“}”]
[ "*8 位" | "*qp" | “*b64”]
EOL
1*线
[“#”停产]
行 ::= "##" 文本 EOL
-- 解释为“#”文本 EOL
| 文字停产
使用 onworks.net 服务在线使用 mhbuildmh