Отправить почту в asp.net

Я использую asp.net 3.5 и C #.

Я хочу отправлять почту с asp.net, для этого у меня есть некоторые данные от моего хостинг-провайдера.

которые это:

  • mail.MySite.net
  • Имя пользователя
  • Пароль

Но я не могу отправлять почту через эти данные, я внес следующие изменения в свой файл web.config:

<system.net>
    <mailSettings>
        <smtp>
            <network
                 host="mail.MySite.net"
                 port="8080"
                 userName="UserName"
                 password="Password" />
        </smtp>
    </mailSettings>
</system.net>

Кроме того, в коде я пишу эту функцию:

MailMessage mail = new MailMessage("[email protected]", "[email protected]");
mail.Subject = "Hi";
mail.Body = "Test Mail from ASP.NET";
mail.IsBodyHtml = false;

SmtpClient smp = new SmtpClient();
smp.Send(mail);

но я получаю сообщение об ошибке, так как сообщение не было отправлено.

Пожалуйста, дайте мне знать, что я делаю не так и что мне нужно сделать, чтобы все работало нормально.

Заранее спасибо.


person Zerotoinfinity    schedule 26.05.2010    source источник
comment
Вы уверены, что адрес «Кому» - настоящий и действительный адрес?   -  person rlb.usa    schedule 27.05.2010
comment
Кроме того, попробуйте поместить свой код в блок TRY-CATCH и вывести все сообщение на экран Catch(Exception x){Response.Write(x);}, чтобы увидеть, есть ли в сообщении об ошибке какие-либо подробности, которые вы могли пропустить.   -  person rlb.usa    schedule 27.05.2010
comment
Интересно, связано ли это с отключением ретрансляции SMTP? Я просто выкидываю безумную идею. Когда мы видим фактическое исключение, мы можем предоставить более точную информацию.   -  person DaleyKD    schedule 27.05.2010


Ответы (5)


Вам нужно предоставить учетные данные клиента?

smp.Credentials = CredentialCache.DefaultNetworkCredentials;

or

smp.Credentials = new NetworkCredential("yourUserID", "yourPassword", "yourDomainName");

Кроме того, было бы полезно получить точное исключение.

Дополнительную помощь см. В сообщении Скотта Гатри.

person Kelsey    schedule 26.05.2010

Я сомневаюсь, что порт 8080 - это правильный порт smtp. Возможно порт 25 или 587.

person Joel Coehoorn    schedule 26.05.2010
comment
Я согласен, его порт кажется полностью отключенным. Исключение сообщило бы нам, если это ошибка невозможности подключения или неавторизованная ... до тех пор, пока все это гадание :) - person Kelsey; 27.05.2010
comment
Я предоставлю вам правильное исключение, которое, как я считаю, поможет найти настоящую причину. - person Zerotoinfinity; 27.05.2010

Отправка электронной почты через asp.net С # - не сложная вещь ... просто мы знаем о SMTP-порте и хосте ...

            MailAddress to = new MailAddress("Email Id");

            MailAddress from = new MailAddress("Email Id");

            MailMessage mail = new MailMessage(from, to);

            mail.Subject = "";
            mail.Body = "";


            SmtpClient smtp = new SmtpClient();
            smtp.Host = "smtp.gmail.com";
            smtp.Port = 587;

            smtp.Credentials = new NetworkCredential(
                "Email Id", "Password");
            smtp.EnableSsl = true;

            smtp.Send(mail);
person Manoj Kumar Yellapragada    schedule 25.02.2013

Без использования SMTP добавьте с помощью Microsoft.Office.Interop.Outlook; ссылка

        Application app = new Application();
        NameSpace ns = app.GetNamespace("mapi");
        ns.Logon("Email-Id", "Password", false, true);
        MailItem message = (MailItem)app.CreateItem(OlItemType.olMailItem);
        message.To = "To-Email_ID";
        message.Subject = "A simple test message";
        message.Body = "This is a test. It should work";

        message.Attachments.Add(@"File_Path", Type.Missing, Type.Missing, Type.Missing);

        message.Send();
        ns.Logoff();
person Dinesh Haraveer    schedule 11.03.2013

У меня очень похожий на ваш код, который работает, я думаю, разница в том, что вам нужно указать IP-адрес на свой SMTP-сервер в конструкторе для SMTP-клиента.

        MailMessage Email = new MailMessage("[email protected]", "[email protected]");
        Email.Subject = "RE: Hello World.";
        Email.Body = "Hello World";
        Email.IsBodyHtml = false;
        SmtpClient Client = new SmtpClient(SMTP_SERVER); //This will be an IP address
        Client.Send(Email);

Надеюсь, это поможет! :)

(Кстати, я использовал это в Winforms, службах Windows и ASP .NET. В ASP .NET мне не нужно было ничего указывать на странице aspx.)

person Brandi    schedule 26.05.2010