Weryfikacja poprawności adresów email (INDY)

0

Witam
Mam problem z aplikacja do wysyłania maili (INDY 10).
Mail wysyłany jest do ściśle określonej grupy osób. Dla przykładu niech to bedzie grupa 100 0sób. Wysyłajac maila (w formacie HTML) wysyłam go naraz do tych 100 osób (wpisani są w pole "ukryj adres", zdaje się UDW). Ale jeśli, którykolwiek z adresów tych osób jest nieprawidłowy, INDY generuje wyjatek, co przerywa proces wysyłania. I załózmy, że błąd wystepuje przy 43 osobie - wtedy mail wysyła się do 42 osób - do reszty już nie. Jak tego uniknąć? (w grę nie wchodzi wysyłanie maila w pętli 100 razy, każdy do innej osoby, bo zajmuje to 100 krotnie wiecej czasu i transferu). Czy można (JAK?) przed wysłaniem zasadniczego emaila sprawdzić poprawność adresów email osób do których ma być wysłana poczta?
Ogólnie, czy serwer odpowiada dla danego adresu. Te, które byłyby błędne automatycznie usuwałbym z listy UDW i mail nie szedłby do nich, i byłoby wszystko OK.

Bardzo proszę o sugestie jak sprawdzić czy adres email danego
kontaktu jest poprawny.

Pozdr.
Pepe

0

To chciałeś?

function MailURLMayBeInvalid(const s: string): Boolean;
var
  i: Integer;
  c: string;
begin // ' ', ä, ö, ü, ß, [, ], (, ), : in EMail-Address
  Result := (Trim(s) = '') or (Pos(' ', AnsiLowerCase(s)) > 0) or
    (Pos('ä', AnsiLowerCase(s)) > 0) or (Pos('ö', AnsiLowerCase(s)) > 0) or
    (Pos('ü', AnsiLowerCase(s)) > 0) or (Pos('ß', AnsiLowerCase(s)) > 0) or
    (Pos('[', AnsiLowerCase(s)) > 0) or (Pos(']', AnsiLowerCase(s)) > 0) or
    (Pos('(', AnsiLowerCase(s)) > 0) or (Pos(')', AnsiLowerCase(s)) > 0) or
    (Pos(':', AnsiLowerCase(s)) > 0);
  if Result then Exit; // @ not in EMail-Address;
  i      := Pos('@', s);
  Result := (i = 0) or (i = 1) or (i = Length(s));
  if Result then Exit;
  Result := (Pos('@', Copy(s, i + 1, Length(s) - 1)) > 0);
  if Result then Exit; // Domain <= 1
  c      := Copy(s, i + 1, Length(s));
  Result := Length(c) <= 1;
  if Result then Exit;
  i      := Pos('.', c);
  Result := (i = 0) or (i = 1) or (i = Length(c));
end;
0

Mam wrażenie, że to co podałeś weryfikuje popraność zapisu kontaktu email.

Mnie chodzi o to, żeby program, przed wysłaniem zasadniczego emaila, sprawdził czy adresy email są poprawne, w sensie czy istnieją, czy można na nie wysłać emaila (czy nie jest zablokowany np)...

Tego, że adres napisany jest poprawnie jestem pewien (adresy są podawane dobrowolnie i weryfikowane wcześniej).
Ogólnie to program jest programem, który za zgodą użytkowników wysyła do nich email z pewnymi treściami.

0

To nieco zmienia postać rzeczy... Nie wiem, czy ta się to prosto zrobić bez wcześniejszego wysyłania jednego maila testującego na każdy z adresów...

0

Mnie chodzi o to, żeby program, przed wysłaniem zasadniczego emaila, sprawdził czy adresy email są poprawne, w sensie czy istnieją, czy można na nie wysłać emaila (czy nie jest zablokowany np)...

No to się od razu pisze, że chodzi o sprawdzanie istnienia adresu email, a nie o weryfikację jego zapisu! :/

Na drugi raz pisz sensownie!

1 użytkowników online, w tym zalogowanych: 0, gości: 1