Подтвердить что ты не робот

Отправить электронное письмо asp.net С#

Можно ли отправлять электронную почту с моего компьютера (localhost), используя проект asp.net в С#? Наконец, я собираюсь загрузить свой проект в веб-сервер, но я хочу проверить его перед загрузкой.

Я нашел готовые исходники и попытался запустить их в localhost, но ни один из них не работает успешно. Например, этот код:

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

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

            }
            protected void Btn_SendMail_Click(object sender, EventArgs e)
            {
                MailMessage mailObj = new MailMessage(
                    txtFrom.Text, txtTo.Text, txtSubject.Text, txtBody.Text);
                SmtpClient SMTPServer = new SmtpClient("localhost");
                try
                {
                    SMTPServer.Send(mailObj);
                }
                catch (Exception ex)
                {
                    Label1.Text = ex.ToString();
                }
            }
        }
    }

Итак, как отправить электронное письмо с помощью asp.net С#? Должен ли я настраивать некоторые конфигурации сервера?

4b9b3361

Ответ 1

Отправка электронной почты из Asp.Net:

    MailMessage objMail = new MailMessage("Sending From", "Sending To","Email Subject", "Email Body");
    NetworkCredential objNC = new NetworkCredential("Sender Email","Sender Password");
    SmtpClient objsmtp = new SmtpClient("smtp.live.com", 587); // for hotmail
    objsmtp.EnableSsl = true;
    objsmtp.Credentials = objNC;
    objsmtp.Send(objMail);

Ответ 2

если у вас есть учетная запись gmail, вы можете использовать google smtp для отправки электронной почты

smtpClient.UseDefaultCredentials = false;
smtpClient.Host = "smtp.gmail.com";
smtpClient.Port = 587;
smtpClient.Credentials = new NetworkCredential(username,passwordd);
smtpClient.EnableSsl = true;
smtpClient.Send(mailMessage);

Ответ 3

Ваш код выше должен работать нормально, но вам нужно добавить следующее к вашему web.config(в качестве альтернативы любой конфигурации SMTP на основе кода):

  <system.net>
    <mailSettings>
      <smtp deliveryMethod="Network">
        <network host="your.smtpserver.com" port="25" userName="smtpusername" password="smtppassword" />
      </smtp>
    </mailSettings>
  </system.net>

Если у вас нет доступа к удаленному SMTP-серверу (я использую собственные данные электронной почты POP3/SMTP), вы можете настроить SMTP-сервер в локальном экземпляре IIS, но вы можете столкнуться с проблемами с ретрансляцией ( поскольку большинство IP-адресов интернет-провайдеров указаны в черном списке).

Хорошей альтернативой, если у вас нет доступа к SMTP-серверу, является использование следующих параметров вместо вышеуказанного:

  <system.net>
    <mailSettings>
      <smtp deliveryMethod="SpecifiedPickupDirectory">
          <specifiedPickupDirectory pickupDirectoryLocation="C:\mail"/>
      </smtp>
    </mailSettings>
  </system.net>

Это создаст копию на жестком диске электронной почты, что очень удобно. Вам нужно будет создать указанный вами каталог, иначе вы получите сообщение об ошибке при попытке отправить электронную почту.

Вы можете сконфигурировать эти данные в коде в соответствии с другими ответами здесь (путем настройки свойств объекта SmtpClient, который вы создали), но если вы не получаете информацию из источника данных или информация не является динамической, она лишняя кодирование, когда .Net уже делает это для вас.

Ответ 4

Вы можете отправлять электронную почту от ASP.NET через библиотеки классов С#, найденные в пространстве имен System.Net.Mail. ознакомьтесь с классом SmtpClient, который является основным классом при отправке писем.

Вы можете найти примеры кода в блоге Scott Gu или в MSDN страницы SmtpClient.

Кроме того, вам понадобится SMTP-сервер. Я рекомендую использовать SMTP4Dev почтовый сервер, который предназначен для разработки и не требует какой-либо настройки.

Ответ 5

Create class name SMTP.cs then

using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Mail;
using System.Net.Mime;
using System.Net;



/// <summary>
/// Summary description for SMTP
/// </summary>
public class SMTP
{
    private SmtpClient smtp;

    private static string _smtpIp;
    public static string smtpIp
    {
        get
        {
            if (string.IsNullOrEmpty(_smtpIp))
                _smtpIp = System.Configuration.ConfigurationManager.AppSettings["smtpIp"];

            return _smtpIp;

        }
    }


    public SMTP()
    {
        smtp = new SmtpClient(smtpIp);
     }

    public string Send(string From, string Alias, string To, string Subject, string Body, string Image)
    {
        try
        {
            MailMessage m = new MailMessage("\"" + Alias + "\" <" + From + ">", To);
            m.Subject = Subject;
            m.Priority = MailPriority.Normal;

            AlternateView av1 = AlternateView.CreateAlternateViewFromString(Body, System.Text.Encoding.UTF8, MediaTypeNames.Text.Html);

            if (!string.IsNullOrEmpty(Image))
            {
                string path = HttpContext.Current.Server.MapPath(Image);
                LinkedResource logo = new LinkedResource(path, MediaTypeNames.Image.Gif);
                logo.ContentId = "Logo";
                av1.LinkedResources.Add(logo);
            }

            m.AlternateViews.Add(av1);
            m.IsBodyHtml = true;

            smtp.Send(m);
        }
        catch (Exception e)
        {
            return e.Message;
        }

        return "sucsess";
    }
}

then 

on aspx page

protected void lblSubmit_Click(object sender, EventArgs e)
    {
        //HttpContext.Current.Response.ContentType = "text/plain";
        //Guid guid = Guid.NewGuid();
        string EmailMessage = "<html>" +
                                      "<head>" +
                                          "<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">" +
                                      "</head>" +
                                       "<body style=\"text-align:left;direction:ltr;font-family:Arial;\" >" +
                                       "<style>a{color:#0375b7;} a:hover, a:active {color: #FF7B0C;}</style>" +
                                              "<img src=\"" width=\"190px\"  height= \"103px\"/><br/><br/>" +
                                              "<p>Name:  " + nameID.Value + ",<br/><br/>" +
                                                "<p>Email:  " + EmailID.Value + ",<br/><br/>" +
                                                  "<p>Comments:  " + commentsID.Text + "<br/><br/>" +
                                             // "Welcome to the Test local updates service!<br/>Before we can begin sending you updates, we need you to verify your address by clicking on the link below.<br/>" +
                                              //"<a href=\""></a><br/><br/>" +

                                              //"We look forward to keeping you informed of the latest and greatest events happening in your area.<br/>" +
                                              //"If you have any questions, bug reports, ideas, or just want to talk, please contact us at <br/><br/>" +
                                              //"Enjoy! <br/>" + commentsID.Text + "<br/>" +

                                               //"Test<br/><a href=\"">www.Test.com</a></p>" +
                                      "</body>" +
                                  "</html>";

        lblThank.Text = "Thank you for contact us.";
       // string Body = commentsID.Text;
        SMTP smtp = new SMTP();
        string FromEmail = System.Configuration.ConfigurationManager.AppSettings["FromEmail"];
        string mailReturn = smtp.Send(EmailID.Value, "", FromEmail, "Contact Us Email", EmailMessage, string.Empty);
        //HttpContext.Current.Response.Write("true");
        nameID.Value = "";
        EmailID.Value = "";
        commentsID.Text = "";
    }

Ответ 6

Отправить письмо с прикрепленным файлом, используя asp.net С#

  public void Send(string from, string to, string Message, string subject, string host, int port, string password)
    {
        MailMessage email = new MailMessage();
        email.From = new MailAddress(from);
        email.Subject = subject;
        email.Body = Message;
        SmtpClient smtp = new SmtpClient(host, port);
        smtp.UseDefaultCredentials = false;
        NetworkCredential nc = new NetworkCredential(txtFrom.Text.Trim(), password);
        smtp.Credentials = nc;
        smtp.EnableSsl = true;
        email.IsBodyHtml = true;

        email.To.Add(to);

        string fileName = "";
        if (FileUpload1.PostedFile != null)
        {
            HttpPostedFile attchment = FileUpload1.PostedFile;
            int FileLength = attchment.ContentLength;
            if (FileLength > 0)
            {
                fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
                FileUpload1.PostedFile.SaveAs(Path.Combine(Server.MapPath("~/EmailAttachment"), fileName));
                Attachment attachment = new Attachment(Path.Combine(Server.MapPath("~/EmailAttachment"), fileName));
                email.Attachments.Add(attachment);
            }               
        }
        smtp.Send(email);

    }

для полного учебного пособия шаг за шагом (с видео) посетите http://dotnetawesome.blogspot.in/2013/09/send-email-with-attachment-using-cnet.html

Ответ 7

Ниже приведено решение для вас, если вы не хотите использовать gmail или hotmail:

SmtpClient smtpClient = new SmtpClient("mail.MyWebsiteDomainName.com", 25);

smtpClient.Credentials = new System.Net.NetworkCredential("[email protected]", "myIDPassword");
smtpClient.UseDefaultCredentials = true;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.EnableSsl = true;
MailMessage mail = new MailMessage();


//Setting From , To and CC
mail.From = new MailAddress("[email protected]", "MyWeb Site");
mail.To.Add(new MailAddress("[email protected]"));
mail.CC.Add(new MailAddress("[email protected]"));


smtpClient.Send(mail);

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

Ответ 8

Server.mappath не существует. Объект сервера отсутствует.