правильный код для отправки электронного письма, asp.net - PullRequest
2 голосов
/ 07 октября 2010

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

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 = "test@test.com";

                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);

                }
            }
}

Ответы [ 4 ]

4 голосов
/ 07 октября 2010

Лучшее решение - поместить данные сервера 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 голос
/ 07 октября 2010
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("sender@example.com", 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="me@example.com">
        <network
          host="localhost"
          port="25"
          defaultCredentials="true"
        />
      </smtp>
    </mailSettings>
  </system.net>
</configuration>
0 голосов
/ 07 октября 2010

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

0 голосов
/ 07 октября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...