Использование Cocoa Scripting Bridge для отправки электронной почты, не зная заранее получателя - PullRequest
0 голосов
/ 31 мая 2011

Я использую код из стандартного примера Apple, предоставленного SBSendEmail, для отправки электронного письма. Единственное отличие в моем случае состоит в том, что я заранее не знаю получателя и ожидаю, что пользователь введет получателя в поле «Кому» окна «Почта». Вот мой код:

    MailApplication *mail = [SBApplication
                             applicationWithBundleIdentifier:@"com.apple.Mail"];        

    /* create a new outgoing message object */
    MailOutgoingMessage *emailMessage =
    [[[mail classForScriptingClass:@"outgoing message"] alloc]
     initWithProperties:
     [NSDictionary dictionaryWithObjectsAndKeys:
      @"this is my subject", @"subject",
      @"this is my content", @"content",
      nil]];

    /* add the object to the mail app  */
    [[mail outgoingMessages] addObject: emailMessage];

    /* set the sender, show the message */
    //  emailMessage.sender = [self.fromField stringValue];
    emailMessage.visible = YES;

    /* create a new recipient and add it to the recipients list */
//        MailToRecipient *theRecipient =
//        [[[mail classForScriptingClass:@"to recipient"] alloc]
//         initWithProperties:
//         [NSDictionary dictionaryWithObjectsAndKeys:
//          @"recipientEmailHere@example.com", @"address",
//          nil]];
//        [emailMessage.toRecipients addObject: theRecipient];


    /* add an attachment, if one was specified */
    NSString *attachmentFilePath = "<my provided file path>";
    if ( [attachmentFilePath length] > 0 ) {

        /* create an attachment object */
        MailAttachment *theAttachment = [[[mail
                                           classForScriptingClass:@"attachment"] alloc]
                                         initWithProperties:
                                         [NSDictionary dictionaryWithObjectsAndKeys:
                                          attachmentFilePath, @"fileName",
                                          nil]];

        /* add it to the list of attachments */
        [[emailMessage.content attachments] addObject: theAttachment];
    }
    /* send the message */
    [emailMessage send];

Так как я не указал получателя, почтовое приложение открывает предупреждение «Ошибка», вы не указали ни одного получателя. Хотя в этом предупреждении есть только одна кнопка «Редактировать сообщение», с помощью которой пользователь может затем перейти и добавить получателей. Возможно ли, что это предупреждение не открывается?

1 Ответ

1 голос
/ 31 мая 2011

Вы можете попробовать

[emailMessage open];

, что заставит Mail.app открыть ваше сообщение в окне создания.

Чтобы сделать Mail.app самым передним приложением, чтобы пользователь мог видеть только что созданное окно сообщения, используйте:

 [mail activate];
...