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

Web & réseau Delphi Discussion :

[indy] Comment améliorer le score de mes emails


Sujet :

Web & réseau Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    12 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 12 719
    Points : 34 312
    Points
    34 312
    Billets dans le blog
    52
    Par défaut [indy] Comment améliorer le score de mes emails
    Bonjour,

    je veux améliorer l'envoi de mes emails (score 7.1 selon http://www.mail-tester.com/).
    Pour cela j'ai deux pistes ajouter List-Unsubscribe et ajouter un DKIM. Si j'ai une vague idée pour la seconde je n'ai aucune idée de ce 'List-Unsubscribe'

    j'ai bien un autre point qui me pénalise, selon spam assassin
    -1.625 SUBJ_ALL_CAPS Subject is all capitals Changez votre sujet pour que seulement quelques lettres soient en majuscule, pas tout le sujet
    mais là j'ai un gros doute ! En effet le titre est "Votre Facture/Your Invoice/ Ihre Rechnung <piece>" où pièce est sous la forme Faaaa-nnnn (i.e. F2018-150)
    Comment spam assassin peut-il me répondre que tout le titre est en majuscule
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    12 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 12 719
    Points : 34 312
    Points
    34 312
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    j'avance dans mon scoring = 8.9 actuellement et cela toujours sans DKIM (donc -1)

    Pour le DKIM, comme nos sites sont hébergés (OVH) et non dédiés, j'envisage d'utiliser MailJet comme intermédiaire (solution que m'a indiquée OVH) vous en avez entendu parler ou avez utilisé ? Comme d'habitude sur dvp on trouve plutôt des trucs négatifs (normal ceux qui n'ont pas de problème avec n'ont pas idée de faire de recherche).

    Je voudrais aussi corriger ces deux petits défauts de score
    -0.001 HTML_MESSAGE HTML included in message
    Pas de panique, c'est normal si vous envoyez des e-mails au format HTML
    -0.14 MISSING_MID Missing Message-Id: header
    le premier indique bien que c'est logique mais est-il possible de le supprimer
    le second alors là je n'ai aucune idée de ce que c'est j'ai un début de réponse grâce à tourlourou

    pour construire le message j'utilise ce code
    Code : 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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    function EnvoyerMail(const Annee: String; const Numero: Integer;
                         const EmailTo: String; const Langue: Integer): Boolean;
    var
      NomFichier : String;
      ContenuMsg: TIdMessageBuilderHtml;
      BodyStream: TStream;
      PdfStream,CGVStream : TMemoryStream;
      idMsg: TIdMessage;
      RichText: TTMSFMXRichEditor;
      IDDoc : Cardinal;
    
    begin
      Result := False;
      NomFichier:=SetFileName(Annee,Numero);
      PdfStream := TMemoryStream.Create;
      CGVStream :=TMemoryStream.Create;
      try
        with Datas do
        begin
          FDQuery1.ParamByName('A').asString:=Annee;
          FDQuery1.ParamByName('N').asInteger:=Numero;
          FDQuery1.Active:=True;
          IdDoc:=FDQuery1.FieldByname('ID').AsInteger;
          TBlobField(FDQuery1.FieldByName('PDF')).SaveToStream(PdfStream);
          FDQuery1.Active := False;
        end;
        if PdfStream.Size > 0  then
         begin
           idMsg := TIdMessage.Create;
           try
             IdMsg.ContentType:= 'multipart/alternative';
             ContenuMsg := TIdMessageBuilderHtml.Create;
             ContenuMsg.HtmlCharSet := 'utf-8';
             ContenuMsg.HtmlContentTransfer := 'quoted-printable';
    
             with Datas.CourrierType do
               begin
                Active := False;
                ParamByName('ID').AsInteger := Langue;
                Active := True;
                idMsg.Subject := FieldByName('SUJET').AsString;
                idMsg.Subject := StringReplace(idMsg.Subject, '<piece>', NomFichier,
                                 [rfReplaceAll, rfIgnoreCase]);
                RichText := TTMSFMXRichEditor.Create(nil);
                  try
                    BodyStream:=CreateBlobStream(FieldByName('CONTENU'),bmRead);
                    try
                      RichText.LoadFromStream(BodyStream);
                    finally
                     BodyStream.Free;
                    end;
                    ContenuMsg.Html.Add(RichText.ContentAsHTML());
                    ContenuMsg.PlainText.Text:=RichText.ContentAsPlainText;  
                  finally
                    RichText.Free;
                  end;
                  Active := False;
                end;
    
             idMsg.Recipients.EMailAddresses := EmailTo;
             idMsg.Date := Now; // Date de l'envoi du message
             idMsg.From.Text := Datas.Parametres.MsgFrom; // Adresse expéditeur
             idMsg.ReplyTo.EMailAddresses := Datas.Parametres.MsgReplyTo;
             // Adresse réponse
             idMsg.ReceiptRecipient.Address := Datas.Parametres.MsgReceipt;
             // Adresse reçu
             // NE FONCTIONNE PAS POUR TOUS LES FOURNISSEURS --------------------------------------------
             idMsg.Headers.Add('disposition-notification-to: ' +
                Datas.Parametres.MsgNotif);
              idMsg.Headers.Add('Reply-To: ' + Datas.Parametres.MsgReply);
             // ------------------------------------------------------------------------------------------
    
    
    
             with ContenuMsg.Attachments.Add(PdfStream, 'application/pdf') do
             FileName := NomFichier;
    
             Datas.FDQCGV.Open('',[Langue]);
             if Not Datas.FDQCGV.FieldByName('PDF').isNull then
             begin
                TBlobField(Datas.FDQCGV.FieldByName('PDF')).SaveToStream(CGVStream);
                if CGVStream.Size>0 then
                   with ContenuMsg.Attachments.Add(CGVStream, 'application/pdf') do
                     FileName := 'CGV-TS.PDF';
             end;
    
             ContenuMsg.FillMessage(idMsg);
             result:=SendMail(idMsg);
           finally
             ContenuMsg.Free;
             idmsg.Free;
           end;
         end;
      finally
       FreeAndNil(PdfStream);
       FreeAndNil(CGVStream);
      end;
    ....
    je pensais que la ligne en rouge ferait l'affaire pour la partie texte mais non, des idées ?
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    12 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 12 719
    Points : 34 312
    Points
    34 312
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    Finalement, après pas mal de tâtonnements voici ma solution :
    Le contexte : un domaine hébergé chez OVH, notez bien le "hébergé" ce n'est pas un serveur dédié. Le problème du DKIM c'était qu'il est impossible d'en avoir un dans ce cas
    La solution : passer par un "convoyeur" en l'occurence dans notre cas MailJet, le plus difficile configuré ensuite les DNS pour que cela fonctionne correctement (un peu galère ce truc !)

    C'est tout, je n'ai rien changé à mon process d'envoi si ce n'est les noms d'utilisateur, mot de passe et bien sûr hôte (in-v3.mailjet.com) de mon composant idSMTP.

    Et voilà un joli 9.9/10 de la part de mail-tester !

    Reste le DMARC
    Une politique DMARC permet à un expéditeur de signaler que ces messages sont protégés par SPF et/ou DKIM et de donner les instructions à exécuter si aucune de ces deux méthodes d'authentifications est correcte. Veuillez vérifier que votre SPF et DKIM soient correctement configurés avant d'installer DMARC.
    Et cette histoire de corps de message qui n'est que HTML
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

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

Discussions similaires

  1. Comment importer mes emails et mes archives ?
    Par jlassiramzy dans le forum Outlook
    Réponses: 12
    Dernier message: 08/02/2008, 14h42
  2. [INDY] comment faire un 'POST' avec idHTTP??
    Par gamez dans le forum Composants VCL
    Réponses: 5
    Dernier message: 17/05/2004, 19h02
  3. Comment créé une "interface" pour mes programmes??
    Par alcazar dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 09/02/2004, 13h02
  4. Comment afficher FLASH directement dans le EMAIL
    Par Bilmagic dans le forum Flash
    Réponses: 3
    Dernier message: 05/06/2003, 00h38

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