gpt4 book ai didi

python - Apple Mail.app 使用插件设置 HTML 签名

转载 作者:太空宇宙 更新时间:2023-11-04 06:34:25 27 4
gpt4 key购买 nike

我用 Python 创建了一个 Mail.app 插件,通过调配 ComposeBackEnd 中的 setSignature: 方法来设置从远程服务器提取的自定义签名。根据下面的类转储,我可以使用 setSignatureContents: 设置纯文本签名,这是有效的。

@interface Signature : NSObject <NSCopying>
{
NSString *_uniqueId;
NSString *_name;
NSData *_webArchiveData;
BOOL _isRich;
BOOL _isSavedAsRich;
BOOL _isDirty;
MFSyncedFile *_syncedFile;
}

- (id)syncedFile;
- (id)signaturePath;
- (unsigned long long)hash;
- (BOOL)isEqual:(id)arg1;
- (BOOL)isRich;
- (void)setIsRich:(BOOL)arg1;
- (void)setWebArchive:(id)arg1;
- (id)webArchive;
- (id)webArchiveData;
.....
- (void)setSignatureContents:(id)arg1;
- (id)signatureContents;
- (void)setSignatureName:(id)arg1;
- (id)signatureName;

@end

但是,当我尝试使用 setWebArchive 设置 HTML 签名时:(应该采用 NSData 对象):

signature.setWebArchive_(NSData.dataWithContentsOfURL_(NSURL.URLWithString_('http://...')))

我收到以下错误:

11/7/12 11:07:38.858 AM Mail[8820]: -[NSConcreteData data]: unrecognized selector sent to instance 0x7ffc2386bc00

(远程文件已经是正确的格式)

有什么办法可以实现吗?提前致谢。


编辑 - 试过这个(返回应该响应 -[data] 的 WebArchive 对象):

wds = WebDataSource.alloc().initWithRequest_(NSURLRequest.requestWithURL_(NSURL.URLWithString_('http://...')))
webarchive = wds.webArchive
signature.setWebArchive_(webarchive)

结果:

11/7/12 3:26:59.173 PM Mail[16814]: An uncaught exception was raised
11/7/12 3:26:59.173 PM Mail[16814]: Class OC_PythonObject: no such selector: data

最佳答案

However when I attempt to set an HTML signature using setWebArchive: (which should take an NSData object)… I get the following error:

11/7/12 11:07:38.858 AM Mail[8820]: -[NSConcreteData data]: unrecognized selector

此错误告诉您 -[setWebArchive:] 正试图在您的 NSData 对象上调用 -[data]。由于 -[NSData data] 不存在,您会得到无法识别的选择器异常。

显然它不需要 NSData,它需要通过返回 NSData 来响应 -[data] 的东西。

EDIT - tried this (returns WebArchive object which should respond to -[data]):

wds = WebDataSource.alloc().initWithRequest_(NSURLRequest.requestWithURL_(NSURL.URLWithString_('http://...')))
webarchive = wds.webArchive
signature.setWebArchive_(webarchive)

等一下……您还没有显示这个类的类转储,但另一个类有一个方法 -[webArchive],而不是一个正确的 webArchive。因此,如果它们完全一致,那么这个也可能有一个方法,而不是一个属性。

如果是这样,这意味着 wds.webArchive 不会是一个 WebArchive 对象,它将是一个包装对象,大致代表 Python 的 ObjC 等价物绑定(bind)方法。在那个东西上调用 -[data] 几乎肯定会失败。

11/7/12 3:26:59.173 PM Mail[16814]: Class OC_PythonObject: no such selector: data

如果您只是将其更改为 wds.webArchive(),那应该可以解决问题。

最后,值得在这里进行一些调试打印。如果你认为你有一个 WebArchive 并且 -[WebArchive data] 返回一个 NSData,你可以很容易地测试它:

print webArchive
print webArchive.data()

关于python - Apple Mail.app 使用插件设置 HTML 签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13279277/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com