Maile w C#

0

Witam
Czy da się wysłać dane podane przez użytkownika na maila np. [email protected] bez pobierania maila użytkownika?

0

@Botek: z tego co zalazłem na stronie z linku wynika że trzeba mieć od kogo się wysyła do kogo . Czy jeżeli pominę deklarację tego maila od kogo ma być i po prostu zrobię tą resztę co wysyła to będzie działać?

0

Mail musi być wysłany z jakiegoś konta. Nie można sobie tak o wysłać bez nadawcy. Dlatego trzeba założyć (jeden taki "serwerowy) mail do wysyłania. Użytkownik nie musi go podawać wystarczy ,że ty go założysz.

0

@Botek: Już rozumiem dziękuje za pomoc

1

Kiedyś napisałem, pewnie da się to zrobić bardziej elegancko

public class GSEmailSender
    {
        /// <summary>
        /// Konfiguracja uwierzytelnienia wymagana do wysłania wiadomości
        /// </summary>
        public class SendConfiguration
        {
            /// <summary>
            /// Inicjuje nowe wystąpienie obiektu
            /// </summary>
            /// <param name="SmtpHost">Nazwa serwera SMTP</param>
            /// <param name="SmtpPort">Port nasłuchiwania serwera SMTP</param>
            /// <param name="Credential">Uwierzytelnienie użytkownika wysyłającego wiadomość</param>
            public SendConfiguration(string SmtpHost, int SmtpPort, NetworkCredential Credential)
            {
                this.SmtpHost = SmtpHost;
                this.SmtpPort = SmtpPort;
                this.Credential = Credential;
            }
            /// <summary>
            /// Nazwa serwera SMTP
            /// </summary>
            public string SmtpHost { get; private set; }
            /// <summary>
            /// Port nasłuchiwania serwera SMTP
            /// </summary>
            public int SmtpPort { get; private set; }
            /// <summary>
            /// Uwierzytelnienie użytkownika wysyłającego wiadomość
            /// </summary>
            public NetworkCredential Credential { get; private set; }
        }
        /// <summary>
        /// Klasa reprezentujaca wynik operacji wysyłania wiadomości e-mail
        /// </summary>
        public class SendEmailResult
        {
            internal SendEmailResult()
            {
                Success = true;
                Exception = null;
                ExceptionType = string.Empty;
            }
            internal SendEmailResult(Exception Exception, string ExceptionType)
            {
                Success = false;
                this.Exception = Exception;
                this.ExceptionType = ExceptionType;
            }

            /// <summary>
            /// Określa, czy operacja zakończyła się pomyślnie
            /// </summary>
            public bool Success { get; private set; }
            /// <summary>
            /// Jeżeli <see cref="Success"/> == false, tutaj znajdują się informacje o wyjątku 
            /// </summary>
            public Exception Exception { get; private set; }
            /// <summary>
            /// Jeżeli <see cref="Success"/> == false, tutaj znajdują się informacje o typie wyjątku 
            /// </summary>
            public string ExceptionType { get; private set; }
        }
        /// <summary>
        /// Wysyła wiadomość e-mail
        /// </summary>
        /// <param name="Configuration">Konfiguracja serwera SMTP oraz poświadczeń klienta</param>
        /// <param name="DisplayName">Niestandardowa nazwa nadawcy</param>
        /// <param name="DestinationEmail">Adres e-mail odbiorcy</param>
        /// <param name="Header">Tytuł wiadomości</param>
        /// <param name="Message">Treść wiadomości w formacie HTML</param>
        /// <returns>Zwraca wynik operacji</returns>
        public static SendEmailResult Send(SendConfiguration Configuration, string DisplayName, string DestinationEmail, string Header, string Message, bool IsBodyHTML = false)
        {
            try
            {
                if (string.IsNullOrEmpty(DisplayName))
                    DisplayName = Configuration.Credential.UserName;
                SmtpClient smtpClient = new SmtpClient();
                NetworkCredential basicCredential = Configuration.Credential;
                if (basicCredential == null)
                    throw new ArgumentNullException("Nie podano danych uwierzytelnienia");
                MailMessage message = new MailMessage();
                MailAddress fromAddress = new MailAddress(Configuration.Credential.UserName, DisplayName);

                smtpClient.Port = Configuration.SmtpPort;
                smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtpClient.Host = Configuration.SmtpHost;
                smtpClient.UseDefaultCredentials = false;
                smtpClient.Credentials = basicCredential;
                smtpClient.Timeout = 10000;
                smtpClient.EnableSsl = true;

                message.From = fromAddress;
                message.Subject = Header;
                message.IsBodyHtml = IsBodyHTML;
                message.Body = Message;

                MailAddress MailTo = new MailAddress(DestinationEmail);
                message.To.Add(MailTo);

                smtpClient.Send(message);
                return new SendEmailResult();
            }
            catch (SocketException e)
            {
                return new SendEmailResult(e, e.GetType().ToString());
            }
            catch (SmtpException e)
            {
                return new SendEmailResult(e, e.GetType().ToString());
            }
            catch (Exception e)
            {
                return new SendEmailResult(e, e.GetType().ToString());
            }
        }
    }
1
Botek napisał(a):

Mail musi być wysłany z jakiegoś konta. Nie można sobie tak o wysłać bez nadawcy. Dlatego trzeba założyć (jeden taki "serwerowy) mail do wysyłania. Użytkownik nie musi go podawać wystarczy ,że ty go założysz.

Na ogół to jest prawda, ale z drugiej strony tak naprawdę potrzebny jest serwer SMTP. Każdy "serwer pocztowy" ma coś takiego w sobie (obojętnie, czy konto założone gdzieś tam, czy taki serwer zainstalowany u siebie), podobno też niektóre malware instalują taki serwer po to, żeby wysyłać spam.

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