2010-10-07 6 views
2

У меня есть форма, которая позволяет пользователю отправлять электронную почту всем в список рассылки (таблица linq). У меня возникли проблемы с правильным кодом и синтаксисом для связи с SMTP-сервером.правильный код для отправки электронной почты, asp.net

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.Profile; 
using System.Web.Security; 
using System.Web.Mail; 
using System.Configuration; 
using System.Web.Configuration; 
using System.Net.Configuration; 
using System.Net.Mail; 



public partial class MassEmail : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void Button1_Click(object sender, EventArgs e) 
    { 

     mailingListClassDataContext Class = new mailingListClassDataContext(); 
     var emaillist = from emails in Class.mailinglistMembers select emails.email; 

     foreach (var subcriber in emaillist) 
     { 


       MailMessage objMail = new MailMessage(); 
       objMail.From = "[email protected]"; 

       objMail.To = subcriber; 

       objMail.BodyFormat = MailFormat.Html ; 


       //The subject of the message 
       objMail.Subject = "test email that i hope works" ; 

       //he message text 
       objMail.Body = Editor1.Content; 

       //need help in this area 
       SmtpClient client = new SmtpClient(); 

       SmtpClient.Send(objMail); 

       } 
      } 
} 

ответ

1
using (var db = new mailingListClassDataContext()) 
{ 
    var client = new System.Net.Mail.SmtpClient(); 

    var recipients = from e in db.mailinglistMembers 
        select e.email; 

    foreach (string recipient in recipients) 
    { 
     var message = new System.Net.Mail.MailMessage("[email protected]", recipient); 
     message.Subject = "Hello World!"; 
     message.Body = "<h1>Foo bar</h1>"; 
     message.IsBodyHtml = true; 
     client.Send(message); 
    } 
} 

Попробуйте настройки конфигурации в вашем web.config или machine.config. Убедитесь, что вы указали правильный адрес и порт SMTP-сервера.

<configuration> 
    <system.net> 
    <mailSettings> 
     <smtp deliveryMethod="network" from="[email protected]"> 
     <network 
      host="localhost" 
      port="25" 
      defaultCredentials="true" 
     /> 
     </smtp> 
    </mailSettings> 
    </system.net> 
</configuration> 
+0

спасибо. отлично работал. – PW2

+0

@ PW2, тогда вы должны отметить мой ответ как принятый ответ. – sshow

+0

спасибо! возможно, вы можете помочь мне с моим другим нерешенным вопросом, озаглавленным: «удалить запись onClick, asp.net» – PW2

0

Вы можете передать IP SMTP-сервера или имя в конструкторе для SmtpClient или установить его в явной форме через свойство хоста.

0

Возможно, вы захотите установить Host (и, возможно, Credentials) объект на SmptClient. Сервер (хост) по умолчанию использует localhost. Также рассмотрите возможность создания экземпляра client вне цикла.

4

Лучшее решение поставить детали SMTP-сервер в вашем web.config

<system.net> 
     <mailSettings> 
      <smtp> 
       <network 
        host="smtp.emailhost.com" 
        port="25" 
        userName="username" 
        password="password" /> 
      </smtp> 
     </mailSettings> 
    </system.net> 
    <system.web> 
+1

Или лучше; в 'machine.config' – sshow

Смежные вопросы