发送电子邮件 asp.net c#

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/11704042/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-09 18:53:59  来源:igfitidea点击:

send email asp.net c#

c#asp.netemail

提问by Nurlan

Is it possible to send email from my computer(localhost) using asp.net project in C#? Finally I am going to upload my project into webserver but I want to test it before uploading.

是否可以使用 C# 中的 asp.net 项目从我的计算机(本地主机)发送电子邮件?最后,我要将我的项目上传到网络服务器,但我想在上传之前对其进行测试。

I've found ready source codes and tried run them in localhost, but neither of them work succesfully. For example this code:

我找到了现成的源代码并尝试在本地主机中运行它们,但它们都没有成功。例如这段代码:

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

So how to send email using asp.net C#? Should I setup some server configurations?

那么如何使用 asp.net C# 发送电子邮件呢?我应该设置一些服务器配置吗?

采纳答案by Waqar Janjua

Sending Email from Asp.Net:

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

回答by COLD TOLD

if you have a gmail account you can use google smtp to send an email

如果您有 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);

回答by saintedlama

You can send email from ASP.NET via C# class libraries found in the System.Net.Mailnamespace. take a look at the SmtpClientclass which is the main class involved when sending emails.

您可以通过System.Net.Mail命名空间中的 C# 类库从 ASP.NET 发送电子邮件。看一下SmtpClient发送电子邮件时涉及的主要类的类。

You can find code examples in Scott Gu's Blogor on the MSDN page of SmtpClient.

您可以在 Scott Gu 的博客SmtpClientMSDN 页面上找到代码示例。

Additionally you'll need an SMTP server running. I can recommend to use SMTP4Devmail server that targets development and does not require any setup.

此外,您还需要运行 SMTP 服务器。我可以推荐使用针对开发并且不需要任何设置的SMTP4Dev邮件服务器。

回答by Spikeh

Your code above should work fine, but you need to add the following to your web.config (as an alternative to any code-based SMTP configuration):

您上面的代码应该可以正常工作,但是您需要将以下内容添加到您的 web.config(作为任何基于代码的 SMTP 配置的替代方案):

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

If you don't have access to a remote SMTP server (I use my own POP3 / SMTP email details), you can set up an SMTP server in your local IIS instance, but you may run in to issues with relaying (as most ISP consumer IP addresses are black listed).

如果您无权访问远程 SMTP 服务器(我使用我自己的 POP3 / SMTP 电子邮件详细信息),您可以在本地 IIS 实例中设置一个 SMTP 服务器,但您可能会遇到中继问题(就像大多数 ISP消费者 IP 地址被列入黑名单)。

A good alternative, if you don't have access to an SMTP server, is to use the following settings instead of the above:

如果您无权访问 SMTP 服务器,一个不错的选择是使用以下设置而不是以上设置:

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

This will create a hard disk copy of the email, which is pretty handy. You will need to create the directory you specify above, otherwise you will receive an error when trying to send email.

这将创建电子邮件的硬盘副本,这非常方便。您需要创建上面指定的目录,否则在尝试发送电子邮件时会收到错误消息。

You can configure these details in code as per other answers here (by configuring the properties on the SmtpClient object you have created), but unless you're getting the information from a data source, or the information is dynamic, it's superfluous coding, when .Net already does this for you.

您可以按照此处的其他答案在代码中配置这些详细信息(通过配置您创建的 SmtpClient 对象上的属性),但除非您从数据源获取信息,或者信息是动态的,否则这是多余的编码,当.Net 已经为您做到了。

回答by Shashank Jain

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 = "";
    }

回答by Sourav Mondal

Send Email with Attachment using asp.net C#

使用 asp.net C# 发送带附件的电子邮件

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

    }

for complete tutorial step by step (with Video) visit http://dotnetawesome.blogspot.in/2013/09/send-email-with-attachment-using-cnet.html

完整的教程一步一步(带视频)访问 http://dotnetawesome.blogspot.in/2013/09/send-email-with-attachment-using-cnet.html

回答by SuicideSheep

Below is the solution for you if you do not want to use gmail or hotmail:

如果您不想使用 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("info@MyWebsiteDomainName", "MyWeb Site");
mail.To.Add(new MailAddress("info@MyWebsiteDomainName"));
mail.CC.Add(new MailAddress("[email protected]"));


smtpClient.Send(mail);

Hope it help :)

希望它有帮助:)

回答by Clem

Server.mappath does not exist. There is no Server object.

Server.mappath 不存在。没有服务器对象。