C# Wysyłanie wiadomości elektronicznych

0

Mam problem z wysyłaniem wiadomości elektronicznych (e-mail) w języku C#. Na początku przedstawię wam mój kod:

        private void Send_DoWork(object sender, DoWorkEventArgs e)
        {
            Send RecivedSend = e.Argument as Send;
            foreach (string mail in RecivedSend.To)
            {
                SmtpClient Server = new SmtpClient();
                try
                {
                    MailMessage Message = new MailMessage();
                    Message.To.Add(mail);
                    Message.From = new MailAddress(RecivedSend.From);
                    Message.Subject = RecivedSend.Subject;
                    Message.Body = RecivedSend.Body;

                    Server.Send(Message);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Błąd:\n" + ex.ToString(), "Visual Mail - wiadomości od aplikacji", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

Od systemu dostaje taki błąd, i nie wiem jak to naprawić :(
user image
Jakieś pomysły albo sugestie :>?

0

No wiesz, nie możesz tak z palca wysłać wiadomości. Musisz mieć serwer mailowy, który to tak naprawdę zrobi.

0

Wolno przez jakiś mail typu GMail/Mail.com etc. :D ?

1

SmtpClient Server = new SmtpClient();

to klient czy serwer?

SmtpClient client = new SmtpClient("adres serwera smtp",port);

w konstruktorze SmtpClient(string host, int port) podajesz adres serwera i numer portu, właściwe dla adresu nadawcy. Jaki jest adres i port, tego należy się dowiedzieć.

większość serwerów SMTP wymaga obecnie „kredencjałów”, gdzie user to albo nazwa użytkownika (część adresu przed „@”) albo cały adres, a hasło to hasło.

client.Credentials = NetworkCredential("użytkownik", "hasło");
client.UseDefaultCredentials = false;

jeszcze niektóre serwery (np. gmail) wymagają połaczenia SSL

client.EnableSsl = true;

przykładowa konfiguracja dla Gmaila:

SmtpClient client = new SmtpClient("smtp.gmail.com",587);
client.Credentials = new NetworkCredential("[email protected]", "aasda!@#!@#");
client.UseDefaultCredentials = false;
client.EnableSsl = true;

nie sprawdzane.

0

Tutaj masz sprawdzoną konfigurację:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Windows.Forms;

namespace Voc
{
    class PocztaGmail
    {
        public void wyslij(string tresc)
        {

            SmtpClient smtpClient = new SmtpClient(); //tworzymy klienta smtp
            smtpClient.UseDefaultCredentials = false;
            smtpClient.EnableSsl = true;
            smtpClient.Port = 587;
            MailMessage message = new MailMessage();//tworzymy wiadomość
            MailAddress from = new MailAddress("[email protected]", "Voc");//adres nadawcy i nazwa nadawcy

            message.From = from;
            message.To.Add("[email protected]");//adres odbiorcy
            message.Subject = "Temat wiadomosci.";//temat wiadomości
            message.Body = tresc; //treść wiadomości
            smtpClient.Host = "smtp.gmail.com"; //host serwera
            smtpClient.Credentials = new System.Net.NetworkCredential("[email protected]", "hasłoNadawcy");//nazwa nadawcy i hasło
            try
            {
                smtpClient.SendAsync(message, "[email protected]");//nazwa odbiorcy, wysyłamy wiadomość
            }
            catch (SmtpException ex)
            {

                throw new ApplicationException("Klient SMTP wywołał wyjątek. Sprawdź połączenie z internetem." + ex.Message);

            }
        }
    }
}

 
0

Próbowałem skorzystać z powyższej konfiguracji ale nadal nie wysyła mi maili. Nie zwraca żadnego wyjątku ale wysłane maile nigdy nie dochodzą, a na wireshark nie widać żadnych wychodzących pakietów to serwera smtp.

MartinoOo napisał(a)

Tutaj masz sprawdzoną konfigurację:
...

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