program do wysyłania maili: wysyłanie w pętli

0

Witam,
mam listę maili (odbiorców), treść maila i temat.
Chce napisać program: w jeden textbox podaje te maile, w drugi tresc, w trzeci temat, klikam na guzik "wyslij" i program to wysyla z mojego konta pocztowego.

Chce to napisać ponieważ w outlooku nie ma takiej opcji żeby ci odbiorcy się nie widzieli (a o to mi chodzi).
Pomoże mi ktoś? Jakąś koncepcję tego potrzebuje.

Może w PHP było by to łatwiej zrobić?

0

Nie będzie w ogóle problemu z takim zadanie w .NET
wystarczy zapoznać się z przestrzenią System.Net.Mail:
http://msdn.microsoft.com/en-us/library/system.net.mail.aspx

0

No na razie udało mi się coś takiego skombinować ale nie działa:

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
                message.Subject = textBox1.Text;
                message.Body = richTextBoxTresc.Text;
                message.To.Add(richTextBoxDo.Text);
                message.From = new System.Net.Mail.MailAddress(mojAdres);
                System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com");
                smtp.Send(message);
            }
            catch (Exception es)
            {
                MessageBox.Show(es.Message.ToString());
            }

jakim prawem to ma działać skoro mnie nawet o hasło nie prosi do skrzynki ?

0
ne0 napisał(a)

Chce to napisać ponieważ w outlooku nie ma takiej opcji żeby ci odbiorcy się nie widzieli (a o to mi chodzi).
co Ty nie powiesz nie ma :>

0

Hmmm :/
dzięki [glowa]

ale pytanie jest dalej: czemu to nie działa? skoro się zabrałem za pisanie tego to już chce to napisać.

0

nie mam konta na gmailu, ale zapewne tak jak większość serwerów smtp wymaga uwierzytelniania przy wysyłaniu:

SmtpClient client = new SmtpClient(server);
....
NetworkCredential nc = new NetworkCredential(login, password);
client.Credentials = nc;


po co łapiesz wyjątek, skoro nie czytasz jego treści? wyjątki nie są po to, żeby uprzykrzać programistom życie, ale ułatwiać. leci wyjątek, łapiesz go, dostajesz z niego info, co jest nie tak. wystarczy tylko F5 i kilka ruchów myszą.

a co do twoich pretensji... powinno się wyświetlić okienko, i jeszcze dać się ostylować, nawet kiedy SmtpClient jest używany przez webservice na serwerze, prawda? i jeszcze powinno wiedzieć, kiedy się pokazać (pewnie tylko raz dla każdego serwera smtp) i czy być modalne...
0

jak to go nie czytam? ;/
oczywiście że go czytam -> gdy poleci wyjątek to dostaje messageBoxa z jego treścią.

 System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
                  System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("poczta.o2.pl");
                smtp.Credentials = new System.Net.NetworkCredential(login,haslo);

                message.Subject = "sda";
                message.Body = "adasda";
                message.To.Add(mail);
                message.From = new System.Net.Mail.MailAddress(mail);
              
                 
                smtp.Send(message);

dalej nic z tego

0
MailAddress FromMe = new MailAddress("[email protected]"); // Ty
MailAddress To = new MailAddress("[email protected]"); // Do osoby, do której wysyłasz
MailMessage message = new MailMessage();
message.From = FromMe;
message.To.Add(To);
message.Subject = "Temat"; //nazwa tematu
message.Body = "Jestem n00bem xD"; // tekst w temacie
SmtpClient klient = new SmtpClient("[email protected]"); // Smtp lub SmtpClient
klient.Credentials = new NetworkCredential("TwojLogin","TwojeHaslo");
klient.Send(message);

lub

MailMessage message = new MailMessage("Twojemail","EmailDoKogoWysyłasz","NazwaTematu","Tekst w środku tematu");
StmpClient klient = new SmtpClient("[email protected]");
klient.Credentials = new NetworkCredential("TwojLogin",TwojeHaslo"); // weryfikacja konta i hasła
klient.Send(message);
0

nie działa. Walić to,

0
MailMessage message = new MailMessage("Twojemail","EmailDoKogoWysyłasz","NazwaTematu","Tekst w środku tematu");
StmpClient klient = new SmtpClient("poczta.o2.pl");
klient.Credentials = new NetworkCredential("TwojLogin",TwojeHaslo"); // weryfikacja konta i hasła
klient.Send(message);

Działa tyle, że to się spóźnia troche..

Zamiast: StmpClient klient = new SmtpClient("[email protected]");

daj to:

StmpClient klient = new SmtpClient("poczta.o2.pl");

0

wpisuj tak jak mówisz, wywołuje to buttonem i nie chodzi :)
od razu dostaje wyjątek "Wysyłanie nie powiodło się"

0

kod wygląda prawidłowo. sprawdź, czy wysyłanie w ten sposób działa z innym serwerem smtp. jesteś pewien, że podajesz właściwe hasło i login?

oczywiście że go czytam -> gdy poleci wyjątek to dostaje messageBoxa z jego treścią.
sprawdź, co naprawdę siedzi w rzucanym wyjątku, Message to przecież nie wszystko :/ BTW Message to string, więc ToString() jest zbędne. polecam debugowanie, okna immediate window i locals. może jest jakiś problem na linii gmail-SmtpClient? poszukaj w google.

jednak obstawiam na 80% błędnie podany login i/lub hasło.

[dopisane]
postanowiłem zapytać google, i patrz, o dziwo pierwszy link po zapytaniu o "smtp.gmail.com" mówi, co stanowi problem. https://mail.google.com/support/bin/answer.py?hl=pl&answer=77659 - popatrz na numery portów i na użycie ssl.

0

jest dobre :)
sprawdzałem na kilku skrzynkach.

Pytanie jest inne: czy jesli podaje tak:
klient.Credentials = new System.Net.NetworkCredential("login","haselko");
to czy kompilator tych stringów jakoś <ort>niepodmienia </ort>czy coś z nimi nie robi?

0

chochliki w VS tylko czyhaja zeby podmienic ci login lub haslo :P

google nie gryzie, co prawda pod stara wersje api do maili, ale mozna przerobic
dziala - sprawdzilem

http://www.aspcode.net/Send-mail-from-ASPNET-using-your-gmail-account.aspx

0
private static void WyslijMaila(MailMessage mail, string smtpserver, string user, string pass)
{
   var smtp = new SmtpClient(smtpserver);
   smtp.Port = 587; //!!
   smtp.UseDefaultCredentials = false;
   smtp.Credentials = new NetworkCredential(user, pass);
   smtp.Timeout = 4*3600*1000; // 4h
   smtp.Send(mail);
}

   var mm = new MailMessage("[email protected]", "[email protected]");
   mm.Subject="Temat wiadomości";
   mm.BodyEncoding = Encoding.UTF8;
   mm.Body = "Treść wiadomości";
   try {
      WyslijMaila(mm,"adres.serwera.smtp","uzytkownik","haslo");
   }
0

jesli chodzi o gmail to wymaga on polaczenia ssl, dlatego port 465 (ale kazdy uslugodawca moze zmienic porty, wiec bardzoe sie nie przywiazuj do numerkow 25, 456, ... etc.)
generalnie nalezy sprawdzic jakie wymogi stawia serwer smtp aby moc wyslac przez niego poczte

0

Nie wiem czemu nie mogę wysłać maila z gmail-a z innych kont wysyła się, może ktoś ma jakiś pomysł.

MailAddress from = new MailAddress([email protected]);
        MailAddress to = new MailAddress([email protected]);
        MailMessage message = new MailMessage([email protected],[email protected]);
        message.Subject = "Title";
        message.Body = "Body";
        message.IsBodyHtml = true;
        message.BodyEncoding = Encoding.UTF8;

        SmtpClient client = new SmtpClient(smtp.gmail.com, 465);
        client.Credentials = new System.Net.NetworkCredential(xxx, pass);
        client.EnableSsl = true;
        client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
        client.EnableSsl = true;
        
      
        try
        {   
            client.Send(message);
            Response.Write(correctMialMsg);
            
             
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message+"<br/>");
            Response.Write(filedMialMsg);
        }

Przy probie wysłania maila dostaje timeout-a

0

Udało mi się rozwiązać problem. Wpisałem zły port powinien być 587 , nie wiem czemu tak bo na stronie https://mail.google.com/support/bin/answer.py?hl=pl&answer=77659 jest podany port 465 :/

0

Mam takie pytanko, czy jeśli za pomocą tego kodu od risena chciałbym dajmy na to wysłać e-mail z [email protected] do [email protected], to czy nie powinny login i nadawca być te same? Bo w sumie to chyba na jedno wychodzi? Czy raczej loginem powinno być tylko to co przed "@"? I czy klient SMTP powinien mieć te "@" w adresie, a nie np. "smtp.poczta.onet.pl"? Piszę bo za każdym razem wyskakuje wyjątek a kod mam prawidłowy...

0

login i nadawca nie koniecznie musza byc te same, nie kazdy serwer smtp jest tak skonfigurowany, czasem wystarczy tylko autentykacja do serwera jednym uzytkownikiem, zeby mozna bylo wysylac maile z innych adresow :) ale raczej na takie dziury nie licz w pocztach portalowych, szczegolnie tych duzych portali
wiec lepiej przyjac ze raczej powinny byc te same

zazwyczja nie ma potrzeby jako login dodawac @domenta.com

adres serwera smtp to nazwa hosta lub ip, czyli zdecydowanie np. localhost, 127.0.0.1, poczta.onet.pl, etc.

0

No właśnie ja jako serwer dałem "smtp.poczta.onet.pl", jako login i nadawcę swój adres, a najpierw wyskakiwał wyjątek 10060, a po wyłączeniu antywirusa po prostu "failure sending mail"...

0

ludzie z tym kodem jest coś nie tak, wysłałem jednego maila z Gmail na konto na Onet Poczcie i było wszystko w porządku ale jak wysłałem drugi mail o innej treści to mam całe te konto na onecie rozwalone, nic się nie chce wyświetlać i nie ma żadnych listów, dlaczego tak się dzieje :/

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