Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Při chybě program zapíše chybu a pak jede dál ASP.NET

Aktivity
Avatar
N-nojmi
Člen
Avatar
N-nojmi:19.11.2015 14:39

Zdravím,
dělám aplikaci co má za úkol odeslat 35k emailů, bohužel jsem do zadavatele nedostal validní emailové adresy a jakmile aplikace narazí na první nevalidní adresu (mezery, jména za emailem, dva spojení emaily atd.... ). Potřeboval bych od vás poradit, jak mám upravit kód, aby aplikace v případě chyby se zastavila zapsala chybu do DB a pak se zase rozběhla a pokračovala dál. Napadlo mě dát to do bloku try, catch, ale nevím jak pokračovat..... aplikace píše chybu : The specified string is not in the form required for an e-mail address.

Kód:

try
           {
               if (email.SestavEmail())
               {
                   Label2.Text = (Convert.ToInt32(Label2.Text) + 1).ToString();
               }
               else
               {
                   Timer1.Enabled = false;
                   Label5.Text = "Emaily byly odeslány.";
               }
           }
           catch (Exception ex)
           {
               if (ex.Message == "The specified string is not in the form required for an e-mail address.")
               {
                   email.ZapisChybu();
               }

           }

děkuju za pomoc

Editováno 19.11.2015 14:40
Odpovědět
19.11.2015 14:39
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na N-nojmi
Ondřej Štorc:19.11.2015 14:49

Co něco takového:

while(emailRemaining)
{
        try
        {
                //Odeslání emailů
        }
        catch(Exception ex)
        {
                // Zapáis do DB o chybě
        }
}

A možná by nebylo od chyby místo zachytávání všech vyjímek, zachytávat jen tu, kterou vyhazují nevalidní emaily

Nahoru Odpovědět
19.11.2015 14:49
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na N-nojmi
Ondřej Štorc:19.11.2015 14:52

A ještě možná by nebylo od věci si třeba ověřit formát těch emailových adres podle regexu a zkusit odeslat jen ty které jsou validní (třeba zde: http://emailregex.com je regex pro emaily)

Editováno 19.11.2015 14:53
Nahoru Odpovědět
19.11.2015 14:52
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
N-nojmi
Člen
Avatar
Odpovídá na Ondřej Štorc
N-nojmi:19.11.2015 16:15

Přesně to mě taky napadlo, že to možná řeším moc pozdě, takže už je vliduju, jakmile je vytáhnu z DB a jakmile nejsou validní už je ani nikam neposílám, jenom si v DB poznamenám, že jsou na hovno.....

Díky za tip na regulární výrazt ;)

Nahoru Odpovědět
19.11.2015 16:15
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Ľuboš Čurgó
Tvůrce
Avatar
Ľuboš Čurgó:19.11.2015 18:18

ziadny try catch netreba,

  class Program
    {
        static void Main(string[] args)
        {
            var emails = new List<string>();

            emails.ForEach((email) =>
            {
                if (email.IsEmailValid())
                {
                    //send email
                }
            });

        }
    }
}

public static class Extenstions
{
    public static bool IsEmailValid(this string email)
    {
        bool isEmail = Regex.IsMatch(email, @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z", RegexOptions.IgnoreCase);

        if (!isEmail)
        {
            //log exception

            return false;
        }
        return true;
    }
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
19.11.2015 18:18
Avatar
N-nojmi
Člen
Avatar
Odpovídá na Ľuboš Čurgó
N-nojmi:20.11.2015 10:30

Díky, přesně tak jsem to nakonec udělal, ale zlobí mě regulární výraz co jsem našel.... aplikace spadne při nalezení emailu např. : *******ránský@sez­nam.cz, nebo *********ąa@s­eznam.cz, atd....

Nahoru Odpovědět
20.11.2015 10:30
Není hloupých lidí, jen lidí co málo používají google...
Avatar
N-nojmi
Člen
Avatar
Odpovídá na N-nojmi
N-nojmi:20.11.2015 12:27

ale koukám tvoje kontrola mejlů je o moc lepší, než co jsem našel ;) takže moc děkuju ;)

Nahoru Odpovědět
20.11.2015 12:27
Není hloupých lidí, jen lidí co málo používají google...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.