发送电子邮件asp.net c#
是否可以使用C#中的asp.net项目从我的计算机(localhost)发送电子邮件? 最后我要将我的项目上传到网络服务器,但我想在上传前测试它。
我找到了准备好的源代码并尝试在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 C#发送电子邮件? 我应该设置一些服务器配置吗?
从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);
如果你有一个Gmail帐户,你可以使用谷歌smtp发送电子邮件
smtpClient.UseDefaultCredentials = false; smtpClient.Host = "smtp.gmail.com"; smtpClient.Port = 587; smtpClient.Credentials = new NetworkCredential(username,passwordd); smtpClient.EnableSsl = true; smtpClient.Send(mailMessage);
上面的代码应该可以正常工作,但是您需要将以下内容添加到web.config中(作为任何基于代码的SMTP配置的替代方法):
如果您无法访问远程SMTP服务器(我使用自己的POP3 / SMTP电子邮件详细信息),则可以在本地IIS实例中设置SMTP服务器,但是您可能会遇到中继问题(因为大多数ISP)消费者IP地址黑名单)。
如果您无权访问SMTP服务器,那么一个不错的选择是使用以下设置而不是上述设置:
这将创建电子邮件的硬盘副本,非常方便。 您需要创建上面指定的目录,否则在尝试发送电子邮件时会收到错误。
您可以在此处根据其他答案在代码中配置这些详细信息(通过在您创建的SmtpClient对象上配置属性),但除非您从数据源获取信息,或者信息是动态的,否则它是多余的编码,当.Net已经为你做了这件事。
您可以通过System.Net.Mail
命名空间中的C#类库从ASP.NET发送电子邮件。 看一下SmtpClient
类,它是发送电子邮件时涉及的主要类。
您可以在Scott Gu的博客或SmtpClient的MSDN页面上找到代码示例。
此外,您还需要运行SMTP服务器。 我可以建议使用针对开发的SMTP4Dev邮件服务器,不需要任何设置。
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 description for SMTP /// 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("https://stackoverflow.com/questions/11704042/send-email-asp-net-c-sharp/\"" + 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 = "" + "" + "" + "" + "" + "" + "
" + "Name: " + nameID.Value + ",
" + "
Email: " + EmailID.Value + ",
" + "
Comments: " + commentsID.Text + "
" + // "Welcome to the Test local updates service!
Before we can begin sending you updates, we need you to verify your address by clicking on the link below.
" + //"
" + //"We look forward to keeping you informed of the latest and greatest events happening in your area.
" + //"If you have any questions, bug reports, ideas, or just want to talk, please contact us at
" + //"Enjoy!
" + commentsID.Text + "
" + //"Test
www.Test.com
" + "" + ""; 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 = ""; }
使用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); }
逐步完成教程(使用video)访问http://dotnetawesome.blogspot.in/2013/09/send-email-with-attachment-using-cnet.html
如果您不想使用gmail或hotmail,以下是您的解决方案:
SmtpClient smtpClient = new SmtpClient("mail.MyWebsiteDomainName.com", 25); smtpClient.Credentials = new System.Net.NetworkCredential("info@MyWebsiteDomainName.com", "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("MyEmailID@gmail.com")); smtpClient.Send(mail);
希望它有帮助:)
Server.mappath不存在。 没有Server对象。