2013-04-27 6 views
0

J'essaie de créer un «client de messagerie» super simple pour accepter la fonctionnalité intégrée d'envoi d'un fichier/document en pièce jointe. Je n'ai pas besoin d'autres fonctionnalités de messagerie pour le moment (je transmettrai les données sur les appels Gmail API pour rédiger un message sur le webmail), tout ce dont j'ai besoin est que l'application soit considérée comme une application email valide et accepte le appels système pour l'envoi d'une pièce jointe à un e-mail. Jusqu'à présent, j'ai trouvé que je pouvais configurer les préférences Mail.app pour utiliser une application de messagerie différente tant qu'elle est compilée (à partir de Xcode, par opposition à une application AppleScript), mais je n'ai pas réussi à obtenir toutes les applications de test pour jouer Nice avec la fonctionnalité Partager/envoyer à partir d'autres applications. Cet élément de menu est grisé ou génère une erreur ("SendMail ne sait pas comment communiquer avec votre client de messagerie par défaut.) Sélectionnez une autre application de messagerie à utiliser.") Sauf si je suis configuré pour utiliser Mail ou Outlook comme client de messagerie électronique dans quel cas cela fonctionne bien. De quoi auriez-vous besoin pour accepter ces appels système pour l'envoi d'un courriel?Accepter la fonctionnalité «Partager en pièce jointe» en tant que client de messagerie électronique Mac

J'ai juste besoin de saisir les données envoyées, et gérer à partir de là.

Répondre

0

Votre application cliente doit s'inscrire elle-même pour le modèle d'URL mailto. Ajoutez ceci à votre Info.plist:

<array> 
    <dict> 
     <key>CFBundleURLName</key> 
     <string>mailto: urls</string> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>mailto</string> 
     </array> 
    </dict> 
</array> 
</plist> 

Il doit gérer l'événement. Cela peut être un début:

- (void)applicationWillFinishLaunching:(NSNotification *)aNotification 
{ 
    NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager]; 
    [appleEventManager setEventHandler:self 
          andSelector:@selector(handleGetURLEvent:withReplyEvent:) 
         forEventClass:kInternetEventClass 
          andEventID:kAEGetURL]; 
} 

- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent 
{ 
    NSString *link = [[event paramDescriptorForKeyword:keyDirectObject] stringValue]; 
    /* do something with the link */ 
} 

Il n'est pas clair [pour moi] comment vous allez envoyer la pièce jointe. Partager> Email dans le Finder? Dans tous les cas, vous devrez peut-être ajouter quelque chose pour gérer les pièces jointes.

+0

Merci, djromero. Cela fonctionnerait-il pour la fonctionnalité du menu intégré à l'application? (comme envoyer/partager par e-mail à partir de Word ou Adobe Reader), ou est-ce uniquement pour les demandes par e-mail avec un clic? –

+0

C'est global, je pense. Au moins cela fonctionne dans n'importe quel endroit où je peux envoyer un email (je n'ai pas de lecteur Word ou Adobe). Vous pouvez le configurer dans Mail.app prefs -> General. – djromero

+0

Je me suis rapproché, mais toujours rien de ce dont j'ai besoin pour le moment. Le code ci-dessus gère les liens Mailto à partir d'un clic de navigateur href, mais pas pour les actions de l'application "Attach to email". Généralement, il apparaît qu'il déclenche une série d'événements Apple pour déclencher ce comportement à partir de l'application, mais ces événements ne se déclenchent pas si l'application est incapable de gérer l'événement. Il sait cela à l'avance, cependant, donc je ne sais pas si c'est une entrée ou quoi. Toujours à la recherche. Fait intéressant, même Thunderbird a cette limitation, et leurs forums mentionnent les problèmes d'intégration de MAPI comme étant la cause première suspectée. –

Questions connexes