IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#]envoi de mail avec lotus notes 6.5.1 - pb de formattage du corps de message


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [C#]envoi de mail avec lotus notes 6.5.1 - pb de formattage du corps de message
    Bonjour tout le monde,

    Je developpe une appli qui doit envoyer des mails en joignant des fichiers en piece jointe. L'envoi de mail doit passer par Lotus Notes (on fait avec ce qu'on a...).
    J'ai bien trouve un bout de code qui m'a depanne. J'ai pourtant toujours un leger probleme : je veux pouvoir ecrire un petit message aux destinataires, seulement le corps du mail ne respecte pas les sauts de ligne.

    Voici mon code C#, adapte d'un celebre code VB qui traine sur les pages de ce forum:

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    // start a Notes session
    Domino.NotesSession session = new Domino.NotesSession();
    session.Initialize(password);
    // get the session user name
    string userName = session.UserName; // something like "CN=Bertrand Rigal/OU=xxx/O=xxx"
    string mailDbName = "names.nsf"; // default name used in my corpo
    // open the mail database in Notes
    Domino.NotesDatabase mailDb = session.GetDatabase("", mailDbName, false);
     
    if (!mailDb.IsOpen)
    {
    mailDb.Open();
    }
    // set up the new mail document
    Domino.NotesDocument mailDoc = mailDb.CreateDocument();
    mailDoc.AppendItemValue("Form", "Memo");
    mailDoc.AppendItemValue("Memo", "Memo");
    mailDoc.AppendItemValue("SendTo", this._to.ToArray());
    mailDoc.AppendItemValue("Recipients", this._to.ToArray());
    mailDoc.AppendItemValue("CopyTo", this._cc.ToArray());
    mailDoc.AppendItemValue("BlindCopyTo", this._bcc.ToArray());
    mailDoc.AppendItemValue("From", userName);
    mailDoc.AppendItemValue("Subject", subject);
    mailDoc.AppendItemValue("DeliveryOption", "High");
    mailDoc.AppendItemValue("DeliveryReport", "Basic");
    mailDoc.AppendItemValue("ReturnReceipt", "No");
    DateTime dt = DateTime.Now;
    mailDoc.AppendItemValue("ComposedDate", dt);
    mailDoc.AppendItemValue("PostedDate", dt);
    mailDoc.AppendItemValue("Body", body);
     
    mailDoc.SaveMessageOnSend = true;
     
    // set up the embedded object and attachment and attach it
    if (!attachment.Equals(""))
    {
    Domino.NotesRichTextItem attachMe = mailDoc.CreateRichTextItem("Attachment");
    Domino.NotesEmbeddedObject embedObj = attachMe.EmbedObject(Domino.EMBED_TYPE.EMBED_ATTACHMENT, "", attachment, "Attachment");
    }
     
    // send the document
    Object dummy = ""; // don't ask me why... it works !
    mailDoc.Send(true, ref (Object)dummy);


    Lorsque je donne la valeur suivant a body :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    string body = "Alert Report - DATE: " + DateTime.Now + " \n-- \nBest regards, \n";
    le corps du message s'affiche sur une seule ligne (et "\n" ne s'affiche pas).

    Est-ce que quelqu'un a la moindre idee ou suggestion ?

    Egalement si quelqu'un peut m'expliquer l'utilite de dummy. Le code VB original ne renseignait pas le deuxieme argument optionnel de Send(...), seulement en C#, il n'y a pas le choix.
    Est-ce qu'il n'y a pas moyen de faire plus propre ?

    Merci d'avance

    Bertrand

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 10
    Points : 12
    Points
    12
    Par défaut Sauts de ligne
    Bonjour Bertrand,

    Lorsque tu fais mailDoc.AppendItemValue("Body", body);, Lotus crée un champ de type texte.
    Or le champ 'Body' d'un mail Notes est au format texte riche (le mail est affiché en utilisant le masque Memo stocké dans la base mail de l'utilisateur). Lorsque l'utilisateur va ouvrir le mail, le champ de texte simple est converti au format texte riche (car définicomme tel dans le masque Memo). Ce format est propriétaire Lotus et ne comprend pas les \n comme des sauts de ligne.

    Pour faire de la mise en page, défini l'objet comme étant du texte riche et utilise sa méthode AddNewLine (elle existe en LotusScript et doit bien être portée en COM):

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Domino.NotesRichTextItem rtiBody = mailDoc.CreateRichTextItem("Body");
    rtiBody.AppendText("Alert Report - DATE: " + DateTime.Now + ");
    rtiBody.AddNewLine(1);  //L'entier en paramètre est le nb de ligne à sauter
    rtiBody.AppendText("Best regards,");
    rtiBody.AddNewLine(1);

    Ca te permet également de positionner où tu le souhaite le fichier attaché dans le mail : lorsque tu appelle la méthode EmbedObject, il ajoute le fichier à la suite dans le mail. Tu peux rajouter encore du texte derrière si tu le souhaite.
    Si tu utilise un champ 'attachment' comme dans ton code, il ne sera pas matérialisé dans le corps du mail et apparaîtra en pied de mail, sans possibilité pour l'utilisateur de le manipuler.

    En espérant que ça puisse t'aider
    Damien

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Solution testee et approuvee

    Merci bcp

    Bertrand

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. programmé un envoi de mail avec lotus notes
    Par bomonde dans le forum Exchange Server
    Réponses: 0
    Dernier message: 22/11/2012, 11h09
  2. Envoi de mail avec Lotus Notes 8.5
    Par pironjulien dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/09/2012, 18h20
  3. Réponses: 1
    Dernier message: 27/06/2012, 00h43
  4. Envoi mail avec lotus notes 6.5
    Par ade94 dans le forum VBA Access
    Réponses: 6
    Dernier message: 28/06/2007, 11h52
  5. Envoi de mail avec Lotus Notes depuis VB
    Par mdriesbach dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 09/11/2005, 15h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo