/// <summary> /// 发送邮件,附加附件 /// </summary> /// <returns></returns> public static bool SendSMTPEMail(string strSmtpServer, string strFrom, string strFromPass, string strto, string strSubject, string strBody) { try { System.Net.Mail.SmtpClient client = new SmtpClient(strSmtpServer); client.Timeout = 9999999; client.UseDefaultCredentials = false; client.Credentials = new System.Net.NetworkCredential(strFrom, strFromPass); client.DeliveryMethod = SmtpDeliveryMethod.Network; System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(strFrom, strto, strSubject, strBody); //System.Net.Mail.Attachment attachment = new System.Net.Mail.Attachment(excelPath); //message.Attachments.Add(attachment); message.BodyEncoding = System.Text.Encoding.UTF8; message.IsBodyHtml = true; client.Send(message); } catch (Exception ex) { return false; } return true; }
那你在订单保存时,调用下该方法就可以了吧~
你得需要一个SMTP服务器,然后通过
SmtpClient类使用SMTP服务器的地址发送邮件到你的目的地址
首先要引用这两个命名空间: using System.Net.Mail; using System.Net;
发邮件代码如下:
MailMessage mailMessage = new MailMessage(); string strBody; //发送地址 mailMessage.From = new MailAddress(“hello@ap.xxylhg.com”); //接收地址 mailMessage.To.Add(“745148385@qq.com”); //邮件标题 mailMessage.Subject = “test a mail”; //邮件内容 strBody = “jomig this is test mail dont block”; mailMessage.Body = strBody; SmtpClient smtpClient = new SmtpClient(); //smtpClient.EnableSsl = true; //Smtp服务器 smtpClient.Host = “mail.ap.xxylhg.com”; //Smtp服务器发送端口 smtpClient.Port = 25; //发送用户名及密码 smtpClient.Credentials = new NetworkCredential(“hello@ap.xxylhg.com”, “邮件密码”); try { //调用发送函数 smtpClient.Send(mailMessage); Label1.Text = “ok”; } catch (Exception ee) { Label1.Text = “false” + ee.Message; } finally { Label1.Text += “<br />Complete.”; } 使用过程中遇到了两个典型的错误,这是样解决的。 1、指定字符串与电子邮件地址所要求的形式不符。邮件填写的都是正确的,我的做法是删除了web.config中的这一段: <system.net> <mailSettings> <smtp from=”xxylhg.com”> <network host=”mail.ap.xxylhg.com” password=”密码” userName=”hello@ap.xxylhg.com” /> </smtp> </mailSettings> </system.net> 也许是程序中新给的设置和web.config中的配置冲突。目前还不太清楚到底是什么原因,但是删掉以后,程序确实正常了。 经过再次测试(测试环境Asp.Net4.0),当在<system.net>节中配置好之后,在SmtpClient smtpClient = new SmtpClient();行之后就可以不用再次设置参数,直接调用smtpClient.Send(mailMessage)可以成功发送邮件,再次验证这里的配置和程序中的配置是同一个功能。 2、在邮件标头中找到无效的字符:“工” 还是问题1中给出的配置段,原来在<smtp from=”xxylhg.com”>这里填写的是汉字,“工”是最后一个字,当我把这几个汉字全改成字母以后,问题就消失了。这就导致,原来我们想在邮件的发件人里写上汉字的全名会失败而只能写字母,如果确实非常想要写上汉字,只好在前面开始的定义行: //发送地址 mailMessage.From = new MailAddress(“hello@ap.xxylhg.com”); //注意引号要改成英文的; 可将汉字的发件人名称加在这里: mailMessage.From = new MailAddress(hello@ap.xxylhg.com, “我是发件人”);//注意引号要改成英文的;
good.