教程:ASP.NET用QQ,網易發送郵件以及添加附件
這是我用QQ郵箱出現的異常:
命令順序不正確。 服務器響應為:Error: need EHLO and AUTH first !
無法從傳輸連接中讀取數據: net_io_connectionclosed
解決方法:
首先去郵箱設置一下內容:
1.開啟SMTP,
2.申請授權碼.(授權碼作為QQ郵箱登陸密碼使用.)
QQ郵箱幫助中心:(可查詢到QQ郵箱使用SMTP的端口,服務器地址和如何設置SSL以及客戶端配置)
http://service.mail.qq.com/
如果這些已經弄好了,應是代碼有問題.請參考C#代碼部分.
QQ郵箱代碼:
注意:用戶名不加后綴"@qq.com",密碼使用生成的授權碼,SSL設置為true
方法一:
(環境:vs2015 mvc , 已測試成功)
WebMail.SmtpServer = "smtp.qq.com"; WebMail.SmtpPort = 587; WebMail.EnableSsl = true; WebMail.UserName = "8448xx4"; WebMail.Password = "ujalggwrqpvdbghi"; WebMail.From = "8448xx4@qq.com";//獲取或設置發件人的電子郵件地址 WebMail.Send( to, subject,content"); //該方法有許多重載可參考msdn library //to 1:該收件人的電子郵件地址。 //subject2:郵件標題 //content3.正文
方法二
string txtFullPath = HttpContext.Current.Server.MapPath("~/")+@"show/XX合約.txt"; //創建一個附件對象 Attachment objMailAttachment = new Attachment(txtFullPath); //創建郵件消息 MailMessage objMailMessage = new MailMessage(); objMailMessage.From = new MailAddress("8448xx4@qq.com"); //源郵件地址 收件人 objMailMessage.To.Add(usermail); objMailMessage.Subject = "活動通知!";//發送郵件的標題 //將附件附加到郵件消息對象中 objMailMessage.Attachments.Add(objMailAttachment); //正文 objMailMessage.Body = "請在2016在六號樓.."; //objMailMessage.IsBodyHtml = true; SmtpClient SmptpMail = new SmtpClient(); //設置發件箱的SMTP服務器 SmptpMail.Host = "smtp.qq.com"; //SSL設置為true SmptpMail.EnableSsl = true; //SMTP使用的端口 SmptpMail.Port = 465; //QQ用戶名,和授權碼 SmptpMail.Credentials = new NetworkCredential("8448xx4", "gsdahhe!"); SmptpMail.Send(objMailMessage);
網易郵箱:(已經測試成功, ps.我網易郵箱好像沒有設置過STMAP和授權碼,似乎賬號,密碼可以直接用)
string txtFullPath = HttpContext.Current.Server.MapPath("~/")+@"show/XXX合約.txt"; //創建一個附件對象 Attachment objMailAttachment = new Attachment(txtFullPath); //創建郵件消息 MailMessage objMailMessage = new MailMessage(); objMailMessage.From = new MailAddress("198489xx@163.com"); //源郵件地址 objMailMessage.To.Add(usermail);//收件人 objMailMessage.Subject = "活動通知!";//發送郵件的標題 //將附件附加到郵件消息對象中 objMailMessage.Attachments.Add(objMailAttachment); //正文 objMailMessage.Body = body; // // objMailMessage.IsBodyHtml = true; SmtpClient SmptpMail = new SmtpClient(); //設置發件箱的SMTP服務器 SmptpMail.Host = "smtp.163.com"; //SMTP使用的端口 SmptpMail.Port = 25; //用戶名密碼 SmptpMail.Credentials = new NetworkCredential("198489xx@163.com","454646546sdsg"); SmptpMail.Send(objMailMessage);