2012-10-30 15 views
5

Próbuję utworzyć formularza kontaktowego aby wysłać wiadomość e-mail (from i to będzie z interfejsem użytkownika):Jak wysłać pocztę za pośrednictwem C# ASP.NET do formularza kontaktowego

try { 
    MailMessage mail = new MailMessage(); 
    SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"); 
    mail.From = new MailAddress("fromadd"); 
    mail.To.Add("toadd"); 
    mail.Subject = "Test Mail"; 
    mail.Body = "This is for testing SMTP mail from GMAIL"; 
    SmtpServer.Port = 587; 
    SmtpServer.Credentials = new System.Net.NetworkCredential("username","password"); 
    SmtpServer.EnableSsl = true; 

    SmtpServer.Send(mail); 
    MessageBox.Show("mail Send"); 
} 
catch (Exception ex) { 
    MessageBox.Show(ex.ToString()); 
} 

ta działa tylko dla Gmaila - jednak , Chciałbym, żeby działało dla każdego dostawcy poczty e-mail - jak bym to zrobił?

+1

Co to znaczy 'generic code'? Jedyną rzeczą, która powoduje, że jest to specyficzne dla Gmaila, jest wartość SMTP i * prawdopodobnie * port. – Arran

+1

Dlaczego po prostu nie przekazać portu i hosta jako parametrów tej funkcji? – Blachshma

+0

to znaczy, że muszę wpisać From - yahoo id oraz - gmail id .. generic – user1785946

Odpowiedz

1

Nie używaj parametrów jawnie wpisanej do połączenia z serwerem SMTP.

Zamiast tego użyj webconfig. Twój program będzie bardziej "ogólny". Wystarczy zmienić config kiedy chcesz wysłać za pośrednictwem innego serwera SMTP

2

należy skonfigurować SmtpClient w pliku web.config:

<configuration> 
    <system.net> 
    <mailSettings> 
     <smtp deliveryMethod="network"> 
     <network 
      host="localhost" 
      port="25" 
      defaultCredentials="true" 
     /> 
     </smtp> 
    </mailSettings> 
    </system.net> 
</configuration> 

Następnie w kodzie można zrobić:

try 
    { 
     MailMessage mail = new MailMessage(); 
     mail.From = new MailAddress("fromadd"); 
     mail.To.Add("toadd"); 
     mail.Subject = "Test Mail"; 
     mail.Body = "This is for testing SMTP mail from GMAIL"; 

     SmtpClient SmtpServer = new SmtpClient();    
     SmtpServer.Send(mail); 
     MessageBox.Show("mail Send"); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.ToString()); 
    } 
+0

gdzie mogę znaleźć klienta smtp – user1785946

0

Dla mnie wygląda na to, że jedyną rzeczą, która może uniemożliwiać wysyłanie wiadomości e-mail przy użyciu dowolnego serwera poczty e-mail, jest fakt, że niektóre serwery pocztowe wymagają uwierzytelnienia (lub ewentualnie alternatywnego numeru portu).

Oto fragment kodu podstawowego, które powinny Ci wskazał w dobrym kierunku

public class SendMail 
{ 

    public SendMail(string SMTPServer, string fromEmail) 
    { 
     this.SMTPServer = SMTPServer; 
     this.FromEmail = fromEmail; 
    } 

    public SendMail(string SMTPServer, string fromEmail, string Username, string Password) : this(SMTPServer, fromEmail) 
    { 
     this.Username = Username; 
     this.Password = Password; 
    } 

    public string SMTPServer { get; set; } 
    public string FromEmail { get; set; } 
    public string Username { get; set; } 
    public string Password { get; set; } 

    public void Send(string toEmail, string subject, string data) 
    { 
     MailMessage mailMsg = new MailMessage(); 
     mailMsg.To.Add(toEmail); 

     MailAddress mailAddress = new MailAddress(this.FromEmail); 

     mailMsg.From = mailAddress; 

     mailMsg.Subject = subject; 
     mailMsg.Body = data; 
     mailMsg.IsBodyHtml = true; 
     SmtpClient smtpClient = new SmtpClient(this.SMTPServer, 25); 

     if (this.Username.Length > 0 && this.Password.Length > 0) 
     { 
      System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(this.Username, this.Password); 
      smtpClient.Credentials = credentials; 
     } 

     smtpClient.Send(mailMsg); 
    } 

} 
0

próbuję tego kodu.

try 
{ 
    MailMessage mail = new MailMessage(); 
    mail.From = new MailAddress("[email protected]"); 
    mail.To.Add("[email protected]"); 
    mail.Subject = "Accept Request"; 
    mail.Body = body; 
    mail.IsBodyHtml = true; 
    SmtpClient smtp = new SmtpClient("smtp.gmail.com"); 
    smtp.Credentials = new System.Net.NetworkCredential("[email protected]", " password"); 
    smtp.EnableSsl = true; 
    smtp.UseDefaultCredentials = true; 
    smtp.Send(mail); 
} 
catch (Exception ex) 
{ 
    ViewData.ModelState.AddModelError("_FORM", ex.ToString()); 
} 
1

Można też spróbować:

MailMessage msgObj = new MailMessage(); 

    msgObj.To = "[email protected]"; 
    msgObj.From = "Mike"; 
    msgObj.Bcc = "[email protected]"; 
    msgObj.Subject = "Test Message"; 
    msgObj.Body = "Hello World!"; 
    SmtpMail.SmtpServer = "Your Server"; 
    SmtpMail.Send("FromEmail", "ToEmail", "Subject", "Query"); 
    SmtpMail.Send(msgObj); 
+0

Połóż to w funkcji i jesteś gotowy. – semicolon

Powiązane problemy