Witam
Czy da się wysłać dane podane przez użytkownika na maila np. dfgfdggd@fdgfdb.pl bez pobierania maila użytkownika?
- Rejestracja:około 6 lat
- Ostatnio:5 dni
- Postów:214
Da się tylko musisz podpiąć jakiegoś swojego maila.
https://docs.microsoft.com/pl-pl/dotnet/api/system.net.mail.smtpclient?view=net-5.0
Przykład do gmaila
https://stackoverflow.com/questions/704636/sending-email-through-gmail-smtp-server-with-c-sharp

- Rejestracja:prawie 5 lat
- Ostatnio:2 miesiące
- Postów:35
@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ć?

- Rejestracja:prawie 6 lat
- Ostatnio:ponad 4 lata
- Postów:385
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());
}
}
}

- Rejestracja:około 19 lat
- Ostatnio:około 5 godzin
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.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.