1 .. SPDX-License-Identifier: GPL-2.0-or-later
3 .. include:: ../disclaimer-zh_CN.rst
7 :Original: Documentation/process/email-clients.rst
10 - 贾威威 Harry Wei <harryxiyou@gmail.com>
11 - 时奎亮 Alex Shi <alexs@kernel.org>
12 - 吴想成 Wu XiangCheng <bobwxc@email.cn>
15 - Yinglin Luan <synmyth@gmail.com>
16 - Xiaochen Wang <wangxiaochen0@gmail.com>
17 - yaxinsn <yaxinsn@163.com>
20 =======================
25 现在大多数开发人员使用 ``git send-email`` 而不是常规的电子邮件客户端。这方面
26 的手册非常好。在接收端,维护人员使用 ``git am`` 加载补丁。
28 如果你是 ``git`` 新手,那么把你的第一个补丁发送给你自己。将其保存为包含所有
29 标题的原始文本。运行 ``git am raw_email.txt`` ,然后使用 ``git log`` 查看更
30 改日志。如果工作正常,再将补丁发送到相应的邮件列表。
36 Linux内核补丁是通过邮件被提交的,最好把补丁作为邮件体的内嵌文本。有些维护者
37 接收附件,但是附件的内容格式应该是"text/plain"。然而,附件一般是不赞成的,
38 因为这会使补丁的引用部分在评论过程中变的很困难。
40 同时也强烈建议在补丁或其他邮件的正文中使用纯文本格式。https://useplaintext.email
41 有助于了解如何配置你喜欢的邮件客户端,并在您还没有首选的情况下列出一些推荐的
44 用来发送Linux内核补丁的邮件客户端在发送补丁时应该处于文本的原始状态。例如,
45 他们不能改变或者删除制表符或者空格,甚至是在每一行的开头或者结尾。
47 不要通过"format=flowed"模式发送补丁。这样会引起不可预期以及有害的断行。
49 不要让你的邮件客户端进行自动换行。这样也会破坏你的补丁。
51 邮件客户端不能改变文本的字符集编码方式。要发送的补丁只能是ASCII或者UTF-8编码
52 方式,如果你使用UTF-8编码方式发送邮件,那么你将会避免一些可能发生的字符集问题。
54 邮件客户端应该生成并且保持“References:”或者“In-Reply-To:”邮件头,这样邮件会话
57 复制粘帖(或者剪贴粘帖)通常不能用于补丁,因为制表符会转换为空格。使用xclipboard,
58 xclip或者xcutsel也许可以,但是最好测试一下或者避免使用复制粘帖。
60 不要在使用PGP/GPG签名的邮件中包含补丁。这样会使得很多脚本不能读取和适用于你的
63 在给内核邮件列表发送补丁之前,给自己发送一个补丁是个不错的主意,保存接收到的
64 邮件,将补丁用'patch'命令打上,如果成功了,再给内核邮件列表发送。
70 这里给出一些详细的MUA配置提示,可以用于给Linux内核发送补丁。这些并不意味是
83 在 :menuselection:`Sending Preferences` 菜单:
85 - :menuselection:`Do Not Send Flowed Text` 必须开启
86 - :menuselection:`Strip Whitespace Before Sending` 必须关闭
88 当写邮件时,光标应该放在补丁会出现的地方,然后按下 :kbd:`CTRL-R` 组合键,使指
96 用 :menuselection:`Message-->Insert File` (:kbd:`CTRL-I`) 或外置编辑器插入补丁。
98 若要在Claws编辑窗口重修改插入的补丁,需关闭
99 :menuselection:`Configuration-->Preferences-->Compose-->Wrapping`
108 从 :menuselection:`格式-->段落样式-->预格式化` (:kbd:`CTRL-7`)
109 或工具栏选择 :menuselection:`预格式化` ;
112 :menuselection:`插入-->文本文件...` (:kbd:`ALT-N x`) 插入补丁文件。
114 你还可以 ``diff -Nru old.c new.c | xclip`` ,选择 :menuselection:`预格式化` ,
122 默认撰写设置禁用HTML格式是合适的;不要启用它。
124 当书写一封邮件的时候,在选项下面不要选择自动换行。唯一的缺点就是你在邮件中输
125 入的任何文本都不会被自动换行,因此你必须在发送补丁之前手动换行。最简单的方法
126 就是启用自动换行来书写邮件,然后把它保存为草稿。一旦你在草稿中再次打开它,它
127 已经全部自动换行了,那么你的邮件虽然没有选择自动换行,但是还不会失去已有的自
130 在邮件的底部,插入补丁之前,放上常用的补丁定界符:三个连字符(``---``)。
132 然后在 :menuselection:`信件` 菜单,选择 :menuselection:`插入文本文件` ,接
133 着选取你的补丁文件。还有一个额外的选项,你可以通过它配置你的创建新邮件工具栏,
134 加上 :menuselection:`插入文本文件` 图标。
136 将编辑器窗口拉到足够宽避免折行。对于KMail 1.13.5 (KDE 4.5.4),它会在发送邮件
137 时对编辑器窗口中显示折行的地方自动换行。在选项菜单中取消自动换行仍不能解决。
138 因此,如果你的补丁中有非常长的行,必须在发送之前把编辑器窗口拉得非常宽。
139 参见:https://bugs.kde.org/show_bug.cgi?id=174034
141 你可以安全地用GPG签名附件,但是内嵌补丁最好不要使用GPG签名它们。作为内嵌文本
142 插入的签名补丁将使其难以从7-bit编码中提取。
144 如果你非要以附件的形式发送补丁,那么就右键点击附件,然后选择
145 :menuselection:`属性` ,打开 :menuselection:`建议自动显示` ,使附件内联更容
148 当你要保存将要发送的内嵌文本补丁,你可以从消息列表窗格选择包含补丁的邮件,然
149 后右键选择 :menuselection:`另存为` 。如果整个电子邮件的组成正确,您可直接将
150 其作为补丁使用。电子邮件以当前用户可读写权限保存,因此您必须 ``chmod`` ,以
166 很多Linux开发人员使用mutt客户端,这证明它肯定工作得非常漂亮。
168 Mutt不自带编辑器,所以不管你使用什么编辑器,不自动断行就行。大多数编辑器都有
169 :menuselection:`插入文件` 选项,它可以在不改变文件内容的情况下插入文件。
171 用 ``vim`` 作为mutt的编辑器::
179 然后再按中键或者shift-insert或者使用::
184 在未设置 ``set paste`` 时(a)ttach工作的很好。
186 你可以通过 ``git format-patch`` 生成补丁,然后用 Mutt发送它们::
188 $ mutt -H 0001-some-bug-fix.patch
193 然而,把 ``send_charset`` 设置一下也是一个不错的主意::
195 set send_charset="us-ascii:utf-8"
197 Mutt 是高度可配置的。 这里是个使用mutt通过 Gmail 发送的补丁的最小配置::
200 # ================ IMAP ====================
201 set imap_user = 'yourusername@gmail.com'
202 set imap_pass = 'yourpassword'
203 set spoolfile = imaps://imap.gmail.com/INBOX
204 set folder = imaps://imap.gmail.com/
205 set record="imaps://imap.gmail.com/[Gmail]/Sent Mail"
206 set postponed="imaps://imap.gmail.com/[Gmail]/Drafts"
207 set mbox="imaps://imap.gmail.com/[Gmail]/All Mail"
209 # ================ SMTP ====================
210 set smtp_url = "smtp://username@smtp.gmail.com:587/"
211 set smtp_pass = $imap_pass
212 set ssl_force_tls = yes # Require encrypted connection
214 # ================ Composition ====================
215 set editor = `echo \$EDITOR`
216 set edit_headers = yes # See the headers when editing
217 set charset = UTF-8 # value of $LANG; also fallback for send_charset
218 # Sender, email address, and sign-off line must match
219 unset use_domain # because joe@localhost is just embarrassing
220 set realname = "YOUR NAME"
221 set from = "username@gmail.com"
226 https://gitlab.com/muttmua/mutt/-/wikis/UseCases/Gmail
228 http://www.mutt.org/doc/manual/
233 Pine过去有一些空格删减问题,但是这些现在应该都被修复了。
235 如果可以,请使用alpine(pine的继承者)。
239 - 最近的版本需要 ``quell-flowed-text``
240 - ``no-strip-whitespace-before-send`` 选项也是需要的。
246 - 内嵌文本可以很好的工作(或者使用附件)。
249 - 如果通过non-SSL连接,无法使用TLS SMTP授权。
251 - 将地址添加到通讯簿时无法正确理解显示的名称。
256 Thunderbird是Outlook的克隆版本,它很容易损坏文本,但也有一些方法强制修正。
258 在完成修改后(包括安装扩展),您需要重新启动Thunderbird。
262 使用Thunderbird发补丁最简单的方法是使用扩展来打开您最喜欢的外部编辑器。
266 - “External Editor Revived”
268 https://github.com/Frederick888/external-editor-revived
270 https://addons.thunderbird.net/en-GB/thunderbird/addon/external-editor-revived/
272 它需要安装“本地消息主机(native messaging host)”。
274 https://github.com/Frederick888/external-editor-revived/wiki
278 https://github.com/exteditor/exteditor
280 下载并安装此扩展,然后打开 :menuselection:`新建消息` 窗口, 用
281 :menuselection:`查看-->工具栏-->自定义...` 给它增加一个按钮,直接点击此
284 请注意,“External Editor”要求你的编辑器不能fork,换句话说,编辑器必须在
285 关闭前不返回。你可能需要传递额外的参数或修改编辑器设置。最值得注意的是,
286 如果您使用的是gvim,那么您必须将 :menuselection:`external editor` 设置的
287 编辑器字段设置为 ``/usr/bin/gvim --nofork"`` (假设可执行文件在
288 ``/usr/bin`` ),以传递 ``-f`` 参数。如果您正在使用其他编辑器,请阅读其
293 - 修改你的Thunderbird设置,不要使用 ``format=flowed`` !
295 :menuselection:`主菜单-->首选项-->常规-->配置编辑器...`
298 - 将 ``mailnews.send_plaintext_flowed`` 设为 ``false``
300 - 将 ``mailnews.wraplength`` 从 ``72`` 改为 ``0``
304 :menuselection:`主菜单-->账户设置-->你的@邮件.地址-->通讯录/编写&地址簿` ,
308 回到主窗口, :menuselection:`主菜单-->查看-->消息体为-->纯文本` !
313 可以使用它。使用"Insert file..."或者外部的编辑器。
320 Gmail网页客户端自动地把制表符转换为空格。
322 虽然制表符转换为空格问题可以被外部编辑器解决,但它同时还会使用回车换行把每行
325 另一个问题是Gmail还会把任何含有非ASCII的字符的消息改用base64编码,如欧洲人的