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 retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 952
    Points
    40 952
    Billets dans le blog
    62
    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
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 952
    Points
    40 952
    Billets dans le blog
    62
    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 ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 952
    Points
    40 952
    Billets dans le blog
    62
    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
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Bonsoir Sergio,

    Désolé si je remonte ce sujet des limbes...

    Peux tu faire un retour sur le service de MailJet ?

    Je suis un peu dans ton cas, j'ai amélioré mon score en ajoutant le DMARC et mon SPF était déjà correcte.

    Reste le DKIM mais là si j'ai bien compris c'est plus difficile à mettre en place.
    Il faut généré une pair de clé, paramétrer une zone DNS du domaine et surtout cela implique la signature de tous les messages (ce que propose de faire Mailjet).

    Utilises tu le Relais SMTP Mailjet ?
    As tu testé toujours chez MailJet "EMail API" ?

    Et sinon as tu essayé de signer les messages avec Delphi je crois que la suite de composant Clever Internet Suite le permet. Une fois signé je pense qu'il suffit de l'envoyer via le serveur smtp habituel.

    Merci pour ton retour d'expérience.

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 952
    Points
    40 952
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Cela a très bien fonctionné pendant trois ans, c'est toujours le cas pour mes envois de masse, mais j'ai désormais un utilisateur qui a des problèmes
    En ce qui le concerne je ne sais pas trop ce qu'il en est, car elle utilise plusieurs boites et cette m...e de Courrier de Microsoft en plus de MS Outlook du coup faire un diagnostic est hyper compliqué avec elle (changements de mots de passe, effacement de compte etc...) pas évident de trouver les erreurs
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Ok, merci pour ton retour d'expérience.

    Tu utilises la version payante ?

    Sais tu s'ils limitent le débit des envois (nombre de mail/heure ou minute ou jours ?) Chez orange j'ai constaté des limites de débit et j'ai du mettre en place dans ma boucle d'envois une pause pour ralentir la cadence (genre 200/heure)

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 952
    Points
    40 952
    Billets dans le blog
    62
    Par défaut
    Oui, version payante
    Il me semble qu'il y avait une limite, mais je n'y ai jamais porté attention et pourtant on l'utilise aussi pour les campagnes de marketing (hors delphi donc)
    Je n'ai jamais utilisé l'API plutôt que l'envoi uniquement l'envoi par Indy (AMHA c'est peut-être un tort, mais depuis 3 ans, je n'ai jamais remis le nez dedans)
    Ni le contrôle des réponses en retour (là aussi peu d'envois via le programme échouent, généralement parce que l'adresse mail est fausse)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Je m'auto répond à la question :
    Citation Envoyé par Barbibulle Voir le message
    Et sinon as tu essayé de signer les messages avec Delphi je crois que la suite de composant Clever Internet Suite le permet. Une fois signé je pense qu'il suffit de l'envoyer via le serveur smtp habituel.
    J'ai testé la signature des messages avec DKIM de clever internet suite et vous confirme que cela fonctionne. On n'est donc pas obligé de passer par un serveur SMTP ou un relay SMTP qui gère la signature DKIM.

    Je me suis monté un serveur d'email mais je n'ai pas activé le DKIM sur celui-ci. Le message est donc signé dans l'application delphi avant son passage pas le serveur SMTP.

    D'un point de vue sécurité et praticité c'est bien mieux si le serveur le gère. Car sinon il faut que chaque client possède une copie de la clé privé ce qui ajoute une contrainte de déploiement.
    Mais ii votre serveur est un tier cela veut dire qu'il faut avoir confiance en lui et sa sécurité pour qu'il gère votre clé privé.

    J'imagine que signer numériquement ses mail a des implications juridique ? (le mail étant signé on peut prouver son intégrité)

+ 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