c - 在 Mac OS X 上获取默认电子邮件地址

标签 c macos email abaddressbook

我正在尝试获取当前用户的电子邮件(如果有),以便我可以创建自定义的“联系我们”消息。

代码是用 C 编写的。我尝试过使用 AddressBook.framework,但找不到获取电子邮件地址的方法。

有人知道如何获取电子邮件地址吗?
谢谢。

最佳答案

使用 Address Book C Framework :

#include <AddressBook/AddressBook.h>

要获取所有电子邮件地址:

ABAddressBookRef addressbook = ABGetSharedAddressBook();
ABPersonRef user = ABGetMe(addressbook);
ABMultiValueRef emails = ABRecordCopyValue(user, kABEmailProperty);

if(emails)
{
    if(ABMultiValueCount(emails) != 0)
    {
        for(int i=0;i<ABMultiValueCount(emails);i++)
        {
            CFStringRef email = ABMultiValueCopyValueAtIndex(emails, i);

            // Do something with current email string

            CFRelease(email);
        }
    }

    CFRelease(emails);
}

或者,检查标记为主电子邮件地址:

ABAddressBookRef addressbook = ABGetSharedAddressBook();
ABPersonRef user = ABGetMe(addressbook);
ABMultiValueRef emails = ABRecordCopyValue(user, kABEmailProperty);

if(emails)
{
    if(ABMultiValueCount(emails) != 0)
    {

        CFStringRef primaryIdentifier = ABMultiValueCopyPrimaryIdentifier(emails);

        for(int i=0;i<ABMultiValueCount(emails);i++)
        {
            CFStringRef currentIdentifier = ABMultiValueCopyIdentifierAtIndex(emails, i);

            if(currentIdentifier==primaryIdentifier)
            {
                CFStringRef email = ABMultiValueCopyValueAtIndex(emails, i);

                // Do something with primary email string

                CFRelease(email);
            }

            CFRelease(currentIdentifier);
        }

        CFRelease(primaryIdentifier);
    }

    CFRelease(emails);
}

上述代码并未处理所有潜在错误,例如ABGetMe()可以返回NULL如果用户尚未为自己创建地址簿条目。

关于c - 在 Mac OS X 上获取默认电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5978372/

相关文章:

c - 如何区分两个未初始化的静态变量

c - 关于指针和C数组的问题

c - 遵循原作者的编码风格?即使它很可怕/懒惰/让你的眼睛流血?

objective-c - 在沙箱中模拟按键

macos - 我可以以编程方式打开 NSMenu 吗?

java - 对 Java 电子邮件模板的建议?

php - PHP/MySQL 中的电子邮件发送器

c - 为什么导出的由另一个驱动程序修改的常量值未在原始驱动程序中更新

python - Sublime Text Markdown 到 HTML 电子邮件

email - 如何在 symfony2 中从数据库中渲染 Twig 模板