У меня возникли некоторые проблемы при связывании интернет-пароля брелка с учетной записью электронной почты Mail.app, созданной с помощью Applescript. Я не хочу использовать команду «set password to» Applescript, поскольку хочу, чтобы мое приложение поддерживало доступ к записи цепочки для ключей, которую я создаю.
Так вот, в основном то, что я делаю:
1) Создайте запись цепочки для ключей следующим образом:
SecTrustedApplicationRef objApp[2];
CFArrayRef arrApps;
SecAccessRef objAccess;
SecKeychainItemRef objKeychainItem;
SecProtocolType nProtocolType;
::SecTrustedApplicationCreateFromPath (NULL,&objApp[0]);
::SecTrustedApplicationCreateFromPath ("/Applications/Mail.App",
&objApp[1]);
arrApps = ::CFArrayCreate (kCFAllocatorDefault,(const void **) &objApp,
2,NULL);
::SecAccessCreate (CFSTR ("mail.myserver.com",arrApps,&objAccess);
nPort = 0;
nProtocolType = kSecProtocolTypePOP3;
SecKeychainAttribute objAttrList[] = {
{ kSecLabelItemAttr, 17, (char *) "mail.myserver.com" },
{ kSecAccountItemAttr, 20, (char *) "[email protected]" },
{ kSecServerItemAttr, 17, (char *) "mail.myserver.com" },
{ kSecPortItemAttr, sizeof (int), &nPort },
{ kSecProtocolItemAttr, sizeof (SecProtocolType), &nProtocolType }
};
SecKeychainAttributeList objAttributes =
{ sizeof (objAttrList) / sizeof (objAttrList[0]),
objAttrList
};
::SecKeychainItemCreateFromContent (kSecInternetPasswordItemClass,
&objAttributes,
12, "somepassword"NULL,
objAccess,&objKeychainItem);
2) Создайте аккаунт с помощью Applescript:
tell application "Mail"set newacct to make new pop account with properties
{ name:"[email protected]",
user name:"[email protected]",
uses ssl:true,
server name:"mail.myserver.com",
authentication: password,
port:995,
full name:"Someone",
email addresses:{"[email protected]"}
}
end tell
Обе части работают по отдельности, но Mail не связывает запись цепочки для ключей с созданной учетной записью. Я, должно быть, пропускаю шаг, но я просто не вижу его, поэтому любая помощь будет принята с благодарностью.
Задача ещё не решена.
Других решений пока нет …