让我慷慨地贴上Linux项目文档。我不仅仅限制于Thunderbird,因为您的问题标题表明您对一般性感兴趣,而不仅仅是Thunderbird。另外,请检查源代码以获取更新,可能通过此链接进行,因为更新可能不会传播到此答案。
Linux邮件客户端信息
Git
这些天,大多数开发者使用git send-email
代替常规的邮件客户端。它的手册非常不错。在接收方面,维护者使用git am
来应用补丁。
如果你是git的新手,请将你的第一个补丁发送给自己。将其保存为包含所有标题的原始文本。运行git am raw_email.txt
,然后使用git log
查看更改日志。当它生效时,请将补丁发送到适当的邮件列表中。
通用偏好设置
Linux内核的补丁通过电子邮件提交,最好作为电子邮件正文中的内联文本。一些维护者接受附件,但是附件应该具有“text/plain”内容类型。但是,附件通常不受欢迎,因为在审核过程中引用补丁部分更加困难。
用于Linux内核补丁的邮件客户端应该发送未经修改的补丁文本。例如,它们不应该修改或删除制表符或空格,甚至不应该在行的开头或结尾处进行修改。
不要发送带有"format=flowed"的补丁。这可能导致意外和不必要的换行。
不要让你的电子邮件客户端为你自动换行。这也可能破坏你的补丁。
邮件客户端不应该修改文本的字符集编码。发送的补丁应该只使用ASCII或UTF-8编码。如果你配置了你的邮件客户端以使用UTF-8编码发送邮件,就可以避免一些可能的字符集问题。
邮件客户端应该生成和维护引用:或In-Reply-To:头,以便邮件线索不会中断。
复制和粘贴通常不能用于补丁,因为制表符会转换为空格。使用xclipboard、xclip和/或xcutsel可能会有所帮助,但最好自己测试一下,或者避免复制和粘贴。
不要在包含补丁的邮件中使用PGP/GPG签名。这会破坏许多读取和应用补丁的脚本。(这应该是可以解决的。)
在将补丁发送到Linux邮件列表之前,向自己发送一个补丁,保存接收到的消息,并成功使用'patch'应用它,这是一个好主意。
一些邮件客户端(MUA)提示
以下是针对编辑和发送Linux内核补丁的特定MUA配置提示。这些不是完整的软件包配置摘要。
图例:
TUI = 文本界面
GUI = 图形界面
Alpine (TUI)
配置选项:
在“发送首选项”部分:
- 必须启用“不要发送流式文本”
- 必须禁用“发送前剪裁空格”
当编写邮件时,光标应该放在补丁应该出现的位置,然后按CTRL-R让你指定要插入到邮件中的补丁文件。
Claws Mail (GUI)
可以用这个方法成功地打补丁。
要插入一个补丁,请使用消息->插入文件(CTRL+i)或外部编辑器。
如果要在Claws组合窗口中编辑已插入的补丁,“自动换行”在配置->首选项->组合->换行中应该禁用。
Evolution (图形界面)
有些人用这种方法成功地打补丁。
当撰写邮件时,选择:格式->段落样式->预格式化(Ctrl-7)或工具栏中的“预格式化”。
然后使用:
插入->文本文件...(Alt-n x)
来插入补丁。
您还可以使用“diff -Nru old.c new.c | xclip”,选择“预格式化”,然后使用中间按钮粘贴。
Kmail (图形界面)
有些人用Kmail成功地打补丁。
默认设置不需要启用HTML邮件编辑;
在撰写电子邮件时,在选项下取消“自动换行”复选框。唯一的劣势是你在电子邮件中输入的任何文本都不会自动换行,因此你将不得不在修补程序之前手动换行文本。最简单的方法是启用自动换行功能撰写电子邮件,然后将其保存为草稿。从草稿中再次打开时,它现在已经进行了硬性自动换行,您可以取消“自动换行”而不会丢失现有的换行。
在您的电子邮件底部,在插入修补程序之前,请放置常用的修补程序分隔符:三个连字符(---)。
然后从“消息”菜单项中选择插入文件,并选择您的修补程序。作为附加奖励,您可以自定义消息创建工具栏菜单并将“插入文件”图标放在那里。
使composer窗口足够宽,以便没有行会自动换行。截至KMail 1.13.5(KDE 4.5.4),如果在composer窗口中的某些行自动换行,则KMail在发送电子邮件时会应用自动换行。仅在选项菜单中禁用自动换行是不够的。因此,如果您的修补程序具有非常长的行,则必须在发送电子邮件之前将composer窗口设置得非常宽。请参见:https://bugs.kde.org/show_bug.cgi?id=174034
您可以安全地对附件进行GPG签名,但内联文本更适合作为修补程序,因此不要对其进行GPG签名。签署已插入为内联文本的补丁将使它们难以从其7位编码中提取。
如果您绝对必须将修补程序作为附件而不是作为文本行内插入,则右键单击附件并选择属性,然后突出显示“建议自动显示”,以使附件成为内联,使其更易于查看。
保存以内联文本形式发送的修补程序时,请从消息列表窗格中选择包含修补程序的电子邮件,右键单击并选择“另存为”。如果正确组成了电子邮件,则可以直接使用整个电子邮件作为修补程序。目前没有选项可以在单独查看电子邮件时保存邮件——在kmail的bugzilla中提交了请求,希望能解决这个问题。电子邮件被保存为用户可读写,因此您必须对它们进行chmod以使它们在其他地方复制时可以被组和世界读取。
Lotus Notes(GUI)
远离它。
Mutt(TUI)
许多Linux开发人员使用Mutt,因此它一定工作得很好。
Mutt没有自带编辑器,所以无论使用哪个编辑器都应该确保不会自动换行。大多数编辑器都有一个“插入文件”选项,可以将文件内容原样插入。
要在 mutt 中使用 'vim':
set editor="vi"
如果使用 xclip,请在按下中间按钮或 shift-insert 或使用 :r filename 命令之前输入以下命令:
:set paste
如果想要内联包含补丁,
(a)ttach 可以不用 "set paste"。
你也可以使用 'git format-patch' 生成补丁,然后使用 Mutt 发送它们:
$ mutt -H 0001-some-bug-fix.patch
配置选项:
默认设置应该可以工作。
但是,最好将 "send_charset" 设置为:
set send_charset="us-ascii:utf-8"
Mutt 是高度可定制的。以下是一个最小的配置,用于通过 Gmail 发送补丁:
# .muttrc
# ================ IMAP ====================
set imap_user = 'yourusername@gmail.com'
set imap_pass = 'yourpassword'
set spoolfile = imaps://imap.gmail.com/INBOX
set folder = imaps://imap.gmail.com/
set record="imaps://imap.gmail.com/[Gmail]/Sent Mail"
set postponed="imaps://imap.gmail.com/[Gmail]/Drafts"
set mbox="imaps://imap.gmail.com/[Gmail]/All Mail"
# ================ SMTP ====================
set smtp_url = "smtp://username@smtp.gmail.com:587/"
set smtp_pass = $imap_pass
set ssl_force_tls = yes # Require encrypted connection
# ================ Composition ====================
set editor = `echo \$EDITOR`
set edit_headers = yes # See the headers when editing
set charset = UTF-8 # value of $LANG; also fallback for send_charset
# Sender, email address, and sign-off line must match
unset use_domain # because joe@localhost is just embarrassing
set realname = "YOUR NAME"
set from = "username@gmail.com"
set use_from = yes
以下是更多关于Mutt的信息:
http://dev.mutt.org/trac/wiki/UseCases/Gmail
http://dev.mutt.org/doc/manual.html
Pine (TUI)
Pine过去有一些空格截断问题,但现在应该都已经解决了。
如果可以的话,请使用alpine(pine的后继版本)。
配置选项:
- 最近版本需要quell-flowed-text
- 需要“no-strip-whitespace-before-send”选项
Sylpheed (GUI)
- 对于内嵌文本(或使用附件)效果良好。
- 允许使用外部编辑器。
- 大文件夹处理速度较慢。
- 不支持在非SSL连接上进行TLS SMTP身份验证。
- 撰写窗口中有一个有用的标尺栏。
- 添加地址到地址簿时无法正确识别显示名称。
Thunderbird (GUI)
Thunderbird是一个Outlook克隆版,喜欢搞乱文本,但有办法让它行为正常。
允许使用外部编辑器:
与Thunderbird和补丁一起使用的最简单方法是使用“外部编辑器”扩展,然后只需使用您最喜欢的$EDITOR来阅读/合并补丁到正文中。为此,请下载并安装该扩展,然后使用View->Toolbars->Customize ...添加一个按钮,在Compose对话框中单击它。
请注意,“外部编辑器”要求您的编辑器不能分叉,换句话说,编辑器必须在关闭之前返回。您可能需要传递其他标志或更改编辑器的设置。特别是如果您使用gvim,则必须通过将“/usr/bin/gvim -f”(如果二进制文件位于/usr/bin中)放入“外部编辑器”设置中的文本编辑器字段来传递-gvim选项。如果您使用其他编辑器,请阅读其手册以了解如何执行此操作。
要使内部编辑器正常工作,请执行以下操作:
编辑Thunderbird配置设置,使其不使用format=flowed。
转到“edit->preferences->advanced->config editor”以打开Thunderbird的注册表编辑器。
将“mailnews.send_plaintext_flowed”设置为“false”
将“mailnews.wraplength”从“72”更改为“0”
“View” > “Message Body As” > “Plain Text”
“View” > “Character Encoding” > “Unicode (UTF-8)”
TkRat (GUI)
可以使用“插入文件...”或外部编辑器。
Gmail(Web GUI)
无法用于发送补丁程序。
Gmail Web客户端会自动将制表符转换为空格。
同时,它使用CRLF样式的换行符在每78个字符处换行,尽管tab2space问题可以通过外部编辑器解决。
另一个问题是,Gmail会对任何包含非ASCII字符(例如欧洲名字)的消息进行base64编码。