Pour utiliser un exemple de réponse de Google lors de l'envoi "EHLO":réponse d'analyse syntaxique se terminent par SMTP étendu (ESMTP)
250-mx.google.com at your service, [66.501.941.15]
250-SIZE 35651584
250-8BITMIME
250-AUTH LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250 PIPELINING
Hex:
32 35 30 2D 6D 78 2E 67 6F 6F 67 6C 65 2E 63 6F 6D 20 61 74 20 79 6F 75 72 20 73 65 72 76 69 63 65 2C 20 5B 39 32 2E 34 32 31 2E 35 36 35 2E 34 32 5D 0D 0A 32 35 30 2D 53 49 5A 45 20 33 35 36 35 31 35 38 34 0D 0A 32 35 30 2D 38 42 49 54 4D 49 4D 45 0D 0A 32 35 30 2D 41 55 54 48 20 4C 4F 47 49 4E 20 50 4C 41 49 4E 0D 0A 32 35 30 2D 45 4E 48 41 4E 43 45 44 53 54 41 54 55 53 43 4F 44 45 53 0D 0A 32 35 30 20 50 49 50 45 4C 49 4E 49 4E 47 0D 0A
Puisque la spécification SMTP stipule qu'une ligne doit se terminer par un CR LF (0D 0A), nous pouvons analyser ces deux octets pour trouver des lignes, mais comment déterminer la fin de la réponse? Sur le satellite, les réponses peuvent être divisées en morceaux avec un retard significatif entre les deux. Ce signifie une réponse pourrait finir après un CR LF et ne pas être complète-à-dire:
250-mx.google.com at your service, [66.501.941.15]
250-SIZE 35651584
250-8BITMIME
Toute logique qui recherche un CR LF final serait alors assumer la réponse est complète. Dans ce cas, j'utilise CryptLib pour effectuer le tunnel SLL, mais je peux créer le port avec mon propre code et le passer à la bibliothèque s'il y a un moyen d'obtenir une "fin de réponse".
Ahh raté ça. Merci –
Puisque tous les codes de réponse sont à 3 chiffres? Je suppose que je peux juste tester le quatrième caractère de chaque ligne pour l'absence d'un trait d'union? –