答案1
我假设picasa-hook-email.sh
Picasa 3.9 不再使用该脚本,并且从未调用过。相反,它很可能依赖 MAPI 接口来发送电子邮件。但是,该接口的 wine 实现不支持附件。它将任何发送电子邮件的请求转换为 -URL,mailto:
并且不支持附件。
我现在才开始修改 wine 中的 MAPI,以便使用 -compose 选项直接调用 Thunderbird。让我们看看我是否成功,但请继续关注!我将在这里告知您我的成功(或失败)。
有关 Wine MAPI 源代码请参见此处:https://source.winehq.org/source/dlls/winemapi/sendmail.c. 查看第 157ff 行:附件被明确忽略。
两天后:是的,它有效!
我做了什么:
- 我修补了
sendmail.c
源文件以直接调用 Thunderbird,而不是创建mailto:
-URL - 我使用 openSUSE Build Service 来分支官方的 wine 包并在那里添加了补丁
- 我下载了创建的包,解压
winemapi.dll.so
并将其放到正确的位置。
但要一步一步来。首先看看https://build.opensuse.org/package/show/home:letsfindaway:branches:openSUSE:Leap:15.0/wine。这是分支所在的位置。所有内容均未受影响,只是在构建文件sendmail-thunderbird.patch
中添加了并引用了wine.spec
。您可以查看补丁并将其应用于原始源代码,以查看我所做的更改。
当您点击右侧“wine”下方的“标准”或直接在那里时,就可以找到构建本身:https://build.opensuse.org/package/binaries/home:letsfindaway:branches:openSUSE:Leap:15.0/wine/standard。您使用的是 64 位 wine 还是在 64 位环境中运行的 32 位 wine?根据具体情况下载以下文件之一:
wine-3.7-lp150.<n>.1.x86_64.rpm
适用于 64 位 Winewine-32bit-3.7-lp150.<n>.1.x86_64.rpm
在 64 位环境中运行 32 位 winewine-3.7-lp150.<n>.1.i586.rpm
适用于在 32 位环境中运行的 32 位 wine
<n>
每次触发重建时,该数字都会递增。目前应该是“10”。
然后从 rpm 包文件中提取文件/usr/lib/wine/winemapi.dll.so
。在 Linux 下,大多数图形存档器都应该能够打开该文件。因此,无论您是否像我一样使用 openSUSE 都没关系。即使您使用的是 Ubuntu 或任何其他发行版,您也应该能够提取该文件。
您使用的 wine 版本 (几乎) 也无关紧要。sendmail.c
自 wine 1.6 以来,源文件未发生任何变化。
现在将该文件放在 Wine 安装的相应位置。为确保万无一失,请先重命名原始文件,以便您仍能保留它。如果您使用的是 PlayOnLinux,那么您可能有多个 Wine 安装,位于下方~/.PlayOnLinux/wine/
。请确保在正确的位置进行替换!
此补丁不仅会影响 Picasa,还会影响任何使用 MAPI 发送电子邮件的程序。当然,它永远不会成为官方补丁,因为它仅在 Thunderbird 安装为 时才有效/usr/bin/thunderbird
。
概括:
- 此补丁程序可在 Picasa 在 wine 下运行并使用 Thunderbird 作为邮件程序时启用“发送电子邮件”功能。
- 它适用于从 1.6 开始的多种 wine 版本以及几乎任何 32 位或 64 位 Linux 安装。
- 确保 Thunderbird 已安装为
/usr/bin/thunderbird
。 winemapi.dll.so
从上面提到的档案之一中提取正确的版本并使用它来替代官方版本。