Envoyer un rapport par Email

aranaudaranaud Membre
11:42 modifié dans Vos applications #1
Dasn ma petite application, déjà  inclue le framework ILCrashReporter pour que l'utilisateur puis avoir la possibilité de m'envoyer un email en cas de plantage de l'application.

Mais voila, des fois, sa bug mais sa ne fait pas planter l'application donc aucun rapport. Alors là  pour trouver la source du problème, c'est pas facile surtout que se n'est pas très reproductif.

Donc pour résourdre se problème, je voudrai donné la possibilité à  l'utilisateur de m'envoyer le fichier log de façon plus simple directement en Email.

Réponses

  • laurrislaurris Membre
    11:42 modifié #2
    Tu veux dire envoyer un mail sans passer par Mail app ? Dans ce cas Message Framework est ton ami.
  • aranaudaranaud Membre
    11:42 modifié #3
    Sa semble être sa. Merci.  :p :p
  • aranaudaranaud Membre
    11:42 modifié #4
    :o

    Le mail ne veux pas être envoyé, pourtant, sa n'a pas l'air compliquer à  faire.
    <br />[NSMailDelivery deliverMessage:@&quot;message&quot; subject:@&quot;probleme de bug dans Gestion budget maison&quot; to:@&quot;*cacher*&quot;]<br />
    

    il me demande l'accès au mot de passe. Je valide. Et la sa mouline pendant 1 minute. Et puis rien.
  • Eddy58Eddy58 Membre
    juin 2007 modifié #5
    Je ne sais pas si ton problème vient de là , mais il faut prendre en compte que l'utilisateur doit avoir un compte Mail fonctionnel, car le message.framework se base sur le moteur de Mail.

    Je peux te conseiller le framework EDMessage, bien plus souple. :)
  • aranaudaranaud Membre
    11:42 modifié #6
    dans 1181483311:

    Je ne sais pas si ton problème vient de là , mais il faut prendre en compte que l'utilisateur doit avoir un compte Mail fonctionnel, car le message.framework se base sur le moteur de Mail.

    Mon compte Mail est fonctionnel, je n'ai pas de problème pour envoyer mes mail. Peut-être le fait que j'en ai plusieurs qui le perturbe. A tout les coup, sa ce trouve il en prend une qui n'est pas bonne.

    dans 1181483311:

    Je peux te conseiller le framework EDMessage, bien plus souple. :)

    Je vais essayer.
  • aranaudaranaud Membre
    11:42 modifié #7
    Bon, j'arrive pas à  les compiler (EDMessage). Tout plein d'erreur.

    Alors, je vais faire au plus simple. J'ai vu des applications qui lance directement à  partir de l'application Mail leur Email. Reste à  savoir comment il font.

  • BruBru Membre
    11:42 modifié #8
    Tu peux aussi utiliser mailto: dans un NSUrl, puis ouvrir cet url.

    L'inconvénient, ce que cela ouvre le client de messagerie par défaut en pré-remplissant le nouveau mail, et c'est à  l'utilisateur de faire l'envoi.
    De plus, tu ne peux pas envoyer de pièces jointes.

    L'avantage est que cela te dispense de gérer l'envoi de l'email (et donc t'évite de gérer les contraintes du style si l'utilisateur a un compte messagerie valide, s'il est actuellement connecté à  internet, etc...).

    .
  • AliGatorAliGator Membre, Modérateur
    11:42 modifié #9
    Pour info pour compléter la proposition de Bru : un truc parfois méconnu du "mailto:" c'est qu'on peut aussi préciser un sujet et un corps de message, et pas seulement un expéditeur !

    Par exemple "mailto:report@machin.com&subject=Rapport%20de%20bug&body=Merci%20de%20noter%20le%20bug%20suivant%20:"

    Il faut bien sûr échapper les chaines à  mettre dans les variables "subject" et "body" de notre URL comme dans mon exemple. (stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding)

    Donc avec ça on peut demander a préparation d'un petit bout de mail, simple mais souvent suffisant.
  • aranaudaranaud Membre
    11:42 modifié #10
    J'ai finalement réussie.

    pour les info sur mailto: : http://fr.wikipedia.org/wiki/Mailto. Merci Bruno pour m'avoir mis sur la voix.

    <br />[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@&quot;mailto:p.dupond@example.com&quot;]];<br />
    
  • aranaudaranaud Membre
    11:42 modifié #11
    J'ai encore un petit problème, il faut que je formate le texte du fichier NSLog en un autre format, pas d'espaces et autres caractères spéciaux

    Je pense qui faut utiliser la fonction stringByReplacingPercentEscapesUsingEncoding pour faire sa masi je suis un peu perdu (enfin, complètement) entre les divers types de codage.

    J'ai essayé le 4 mais c'est pas sa.
  • Paisible.frPaisible.fr Membre
    août 2008 modifié #12

    Je peux te conseiller le framework EDMessage, bien plus souple. :)


    Bonjour, si tu sais comment le mettre en oe“uvre cela m'intéresse.  :why?:
    je n'y suis pas encore arrivé.

    PS : j'en profite pour rappeller à  ceux qui utilisent le "message framework" qu'il est deprecated en 10.5
    Je me suis fait avoir j'avais pas vu  :(
  • 11:42 modifié #13
    Peut-être que cette note va vous aider:

    http://developer.apple.com/qa/qa2004/qa1084.html
  • AliGatorAliGator Membre, Modérateur
    août 2008 modifié #14
    Salut,

    [tt]stringByReplacingPercentEscapesUsingEncoding[/tt] fait l'inverse de ce que tu veux faire : ça remplace les "percent-escapes" (%20 pour espace, etc) par les vrais caractères en utilisant un encodage donné.
    Il faut donc pour créer ton URL "mailto" convertir le texte à  envoyer par un [tt]stringByAddingPercentEscapesUsingEncoding:[/tt] (qui va, lui, remplacer les espaces par des %20 et autres caractères pas des %xx) et si c'est pour placer dans une URL, il me semble que la RFC indique qu'il faut utiliser l'encodage UTF-8.
  • Paisible.frPaisible.fr Membre
    11:42 modifié #15
    dans 1218363876:

    Peut-être que cette note va vous aider:

    http://developer.apple.com/qa/qa2004/qa1084.html



    Rahh, je l'ai pourtant dis : le "message framework" est deprecated en 10.5 >:)
  • AliGatorAliGator Membre, Modérateur
    11:42 modifié #16
    Et alors ? Le lien cité montre justement des exemples pour envoyer en email... SANS utiliser le Message Framework  ;)
  • Paisible.frPaisible.fr Membre
    11:42 modifié #17
    Ouais... mais bon pas top d'avoir le client email qui s'ouvre et d'obliger l'utilisateur a cliquer sur "envoyer"

    Moi je voudrais quelque chose qui me permette d'envoyer un rapport de "feedback" qui réponde aux critères suivants :
    1) Compatible 10.4 et 10.5 sans utiliser de choses deprecated
    2) Que cela ne fasse pas appel au client mail de l'utilisateur
    3) Que cela ne demande à  l'utilisateur de droits particulier ou l'acces au trousseau
    4) Que cela ne fasse pas appel à  un script PHP ou Perl ou je ne sait quoi derriere...
    5) j'oublie certainement des choses :)

    Pas encore trouvé la solution idéale...
  • schlumschlum Membre
    11:42 modifié #18
    Je ne vois qu'une solution... Etudier le protocole POP, et y aller en bourrin avec une socket  :P
  • AliGatorAliGator Membre, Modérateur
    11:42 modifié #19
    dans 1218386297:

    Je ne vois qu'une solution... Etudier le protocole POP, et y aller en bourrin avec une socket  :P
    Ben et encore c'est pas suffisant. Parce que le protocole POP n'est vraiment pas compliqué (il n'a pas beaucoup évolué depuis ça création qui date quand même d'un sacré bail, l'existence du mail n'étant pas toute jeune)... mais il faut avoir les bonnes données : nom du serveur d'envoi, email de l'émetteur, login et mot de passe pour le serveur...

    Le truc c'est que ces informations sont accessibles dans Mail.app en général, si l'utilisateur utilise cette application et l'a configurée (cas de 90% des utilisateurs de OSX on va dire à  la louche)... et que ledit utilisateur n'a pas envie de les rerentrer 15 fois...
    L'idéal serait donc d'utiliser un framework made in Apple ou utilisant les données de ce côté pour récupérer tout ce qu'il faut pour l'envoi POP, et qu'il se débouille aussi pour formatter comme il faut l'envoi de message...
    Je ne connais pas trop tous les frameworks disponibles même ceux d'Apple de ce côté... Mais si j'ai tout suivi en somme il faudrait donc trouver une sorte de "Messaging Framework mais compatible 10.4 et 10.5" ou encore utiliser le Messaging Framework en 10.4 et son remplaçant (c'est qui d'ailleurs ?) en 10.5 (compilation conditionnelle ou encore test au runtime)
  • schlumschlum Membre
    11:42 modifié #20
    On peut lancer localement un serveur POP aussi... Mais c'est sûr que pour éviter d'être pris pour du SPAM, il vaut mieux avoir un serveur relais assuré, comme celui du FAI.
  • al33eral33er Membre
    11:42 modifié #21
    dans 1181551262:

    Pour info pour compléter la proposition de Bru : un truc parfois méconnu du "mailto:" c'est qu'on peut aussi préciser un sujet et un corps de message, et pas seulement un expéditeur !

    Par exemple "mailto:report@machin.com&subject=Rapport%20de%20bug&body=Merci%20de%20noter%20le%20bug%20suivant%20:"

    Il faut bien sûr échapper les chaines à  mettre dans les variables "subject" et "body" de notre URL comme dans mon exemple. (stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding)

    Donc avec ça on peut demander a préparation d'un petit bout de mail, simple mais souvent suffisant.


    Ali,

    Est-on limité dans la taille du body ?

    Alexandre.
  • AliGatorAliGator Membre, Modérateur
    11:42 modifié #22
    Faut lire la RFC, j'ai pas le temps là  ce soir je dois filer, mais je te laisse un peu de lecture : http://www.faqs.org/rfcs/rfc2368.html

    A priori je pense pas que ce soit limité, mais c'est vraiment pas non plus fait pour rédiger des mails de 3km
    The special hname "body" indicates that the associated hvalue is the
      body of the message. The "body" hname should contain the content for
      the first text/plain body part of the message. The mailto URL is
      primarily intended for generation of short text messages that are
      actually the content of automatic processing (such as "subscribe"
      messages for mailing lists), not general MIME bodies.
Connectez-vous ou Inscrivez-vous pour répondre.