Технические вопросы и ответы QA1084

Отправка электронного письма

Q: Я хочу добавить опцию к своему приложению, позволяющему пользователю легко посылать мой адрес технической поддержки по электронной почте. Что самый простой путь состоит в том, чтобы сделать это?

A: Я хочу добавить опцию к своему приложению, позволяющему пользователю легко посылать мой адрес технической поддержки по электронной почте. Что самый простой путь состоит в том, чтобы сделать это?

Платформа сообщения (/System/Library/Frameworks/Message) позволяет Вам посылать электронное письмо непосредственно из Вашего приложения. Однако для ситуации Вы описываете, лучше просто создавать сообщение в предпочтительной почтовой программе пользователя и позволять им отправить его. Можно сделать это путем открытия a mailto URL. Расширенное mailto Формат ссылки (как задокументировано в RFC 2368) позволяет Вам указать строку темы и тело сообщения как часть URL. Перечисление 1 показывает простой пример этого в Какао; Перечисление 2 делает ту же вещь в плоскости К.

Перечисление 1  , Создающее электронное письмо в Какао

- (IBAction)sendMailCocoa:(id)sender
    // Create a mail message in the user's preferred mail client 
    // by opening a mailto URL. The extended mailto URL format 
    // is documented by RFC 2368 and is supported by Mail.app 
    // and other modern mail clients.
    //
    // This routine's prototype makes it easy to connect it as 
    // the action of a user interface object in Interface Builder.
{
    NSURL *     url;

    // Create the URL.

    url = [NSURL URLWithString:@"mailto:dts@apple.com"
        "?subject=Hello%20Cruel%20World!"
        "&body=Share%20and%20Enjoy"
    ];
    assert(url != nil);

    // Open the URL.

    (void) [[NSWorkspace sharedWorkspace] openURL:url];
}

Перечисление 2  , Создающее электронное письмо в плоскости К

static void SendMailCarbon(void)
    // Create a mail message in the user's preferred mail client 
    // by opening a mailto URL. The extended mailto URL format 
    // is documented by RFC 2368 and is supported by Mail.app 
    // and other modern mail clients.
{
    OSStatus    err;
    CFURLRef    url;
    static const char kMailtoURL[] = 
        "mailto:dts@apple.com"
        "?subject=Hello%20Cruel%20World!"
        "&body=Share%20and%20Enjoy";

    url = CFURLCreateWithBytes(
        NULL, 
        (const UInt8 *) kMailtoURL, 
        sizeof(kMailtoURL),
        kCFStringEncodingASCII, 
        NULL
    );
    assert(url != NULL);

    err = LSOpenCFURLRef(url, NULL);
    assert(err == noErr);

    CFRelease(url);
}

Если Вы хотите создать сообщение с присоединением, вещи становятся более сложными. Базовая технология для открытия URL 'GURL' Комплект события Apple. В то время как спецификация того комплекта описывает дополнительный параметр для присоединения файлов, этот параметр широко не поддерживается (например, это не поддерживается Почтовым приложением (r. 3855958)). Поэтому, если необходимо отправить присоединение, лучшее решение состоит в том, чтобы написать сценарий Почты, как описано в Технических Вопросах и ответах QA1018, 'Используя AppleScript для отправки электронного письма с присоединением'.



История версии документа


ДатаПримечания
05.11.2004

Новый документ, показывающий, как создать электронную почту в предпочтенной почтовой программе пользователя.