2011-07-28 50 views
2

有沒有人成功想出了在Mail.app插件中更改傳出郵件的to,cc和bcc字段的方法?我一直在瀏覽頭文件,試圖弄清楚我需要做什麼來獲取郵件的收件人列表,並且能夠修改它們(具體來說,刪除一些收件人並將其餘收件人切換爲bcc'ed)。在Mail.app插件中以編程方式讀取並更改to/cc/bcc字段

注意:我知道在哪裏需要看看如何做到這一點,但我花了一些時間在這方面,有很多不同的類來做到這一點,所需的猜測量是非常平凡的。我只是希望有人已經在過去經歷過這樣的事情,並且可以讓我免於重複努力。

回答

1

想通了!

用於組成郵件的窗口是一個MailDocumentEditor,它從DocumentEditor繼承。 DocumentEditor有一個名爲_headersEditor的實例變量,它是一個HeadersEditor對象。

HeadersEditor的to,cc和bcc字段的實例變量分別命名爲_toField,_ccField和_bccField。這些是AddressTextField的實例。

有一些方法可以讓您獲得已輸入到AddressTextField中的地址。如果您熟悉Mail,地址可以通過幾種不同的方式出現在這裏。有些只是純文本地址,有些是地址簿條目的標記(因此它們顯示爲帶有名稱的標記,您可以右鍵單擊以獲取電子郵件地址)。您可以爲NSMutableArray * s _stringsWithNoRecords和_stringsAwaitingRecords以及NSMutableDictionary * _recordsForStrings創建訪問器。

但是,要設置這些字段的地址,請使用initTextCell創建一個NSCell:(NSString *),並在這些字段中輸入您想要的電子郵件地址。然後,調用AddressTextField上的setCell:方法。這將用NSCell中的NSString替換該字段的內容。

+0

注意:我已經說得太早了,以前輸入的地址。獲取_stringsWithNoRecords將獲得純文本電子郵件地址(假設您已經完成命令+ s來首先保存草稿),但它有時會重複。它也不會獲得標記化的電子郵件地址(即它可識別的地址)。此外,_stringsAwaitingRecords和_recordsForStrings都不會給我任何內容(至少在Lion中)。當我對此有更多瞭解時,我會更新答案。然而,如果你知道你已經發送了誰,你可以使用setCell:來設置AddressTextField的內容。 – Aaron

+0

更新:我想出瞭如何獲得收件人的地址作爲字符串!只需調用MessageEditor上的backEnd方法,MessageEditor具有方法toRecipients,ccRecipients和bccRecipients。這些是MessageAddressee對象的NSArrays,其地址方法將爲您提供NSString地址。 – Aaron

相關問題