ASP和ASP.NET发送邮件笔记
这两天因公司网站邮件发不出去,然后研究了在asp网站发送邮件和在asp.net网站发送邮件的代码,把碰到的问题这里记录一下。
1、先说在asp.net中发送邮件吧,
刚开始只有126邮箱可以发出邮件,然后其他163、新浪等发不出去,后来郁闷了很久才知道邮箱的smtp和pop3服务默认是不开通的,需要去手动开通才可以发送邮件。比如说新浪邮箱开通smtp服务截图如下:
其他邮箱也类似,然后才能实现发送邮件的功能,发送邮件代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | /// <summary> /// C#发送邮件 /// </summary> public void ShowSendEmail() { string fromEmail = "xmTan@126.com" ; //发件人邮箱地址 string emailSMTPHost = "smtp.126.com" ; //邮箱SMTP服务器,用来发送邮件 string emailSubject = "Email Subject" ; //邮件主题 string emailBody = "<h1>Email Content</h1><h3>哈哈哈,发送邮件OK了!!!^_^</h3>" ; //邮件内容 string toEmail = "5185185185@qq.com" ; //要发送对象的邮箱地址 string emailName = fromEmail; //登陆邮箱的用户名,可以和发件人邮箱地址一样 string emailPwd = "********" ; //登陆邮箱的密码 try { using (MailMessage msg = new MailMessage(fromEmail, toEmail, emailSubject, emailBody)) { msg.IsBodyHtml = true ; //设置邮件内容是否支持html格式 msg.To.Add( "zhangMao@sina.com" ); //追加多个收件人邮箱,实现群发 msg.Priority = MailPriority.High; //发送邮件的优先等级 SmtpClient mailClient = new SmtpClient(emailSMTPHost); mailClient.UseDefaultCredentials = false ; //设置是否随请求一起发送 mailClient.Credentials = new System.Net.NetworkCredential(emailName, emailPwd); //是否使用安全套接字层 (SSL) 加密连接. SmtpClient 使用 SSL,则为 true;否则为 false。默认值为 false。 mailClient.EnableSsl = true ; mailClient.Send(msg); //调用发送邮件方法 } } catch (Exception ex) { //发送失败:ex.Message; return ; } //发送成功 } |
2、然后使用asp来发送邮件,现经测试有两种方式可以发送邮件成功
第一种方式代码如下:
<%
'定义发送邮件方法 function showSendEmail Set objMail = Server.CreateObject("CDO.Message") Set objCDO = Server.CreateObject("CDO.Configuration") objCDO.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") =2 objCDO.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver")= "smtp.126.com" '邮件服务器 objCDO.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 ' 邮件服务器默认端口 objCDO.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10 '超时设置 objCDO.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 objCDO.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "xmTan@126.com"' 发送邮件的邮箱地址 objCDO.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "*****" '邮箱密码 objCDO.Fields.Update Set objMail.Configuration = objCDO objMail.From = "xmTan@126.com" '发件人,这里和上面的发送邮件地址保持一致 objMail.Subject = "Email Subject" '邮件标题 objMail.To = "51851851851@qq.com" '收件人 objMail.HtmlBody = "哈喽,测试邮件,最近可好?" '发送内容。 objMail.Send Set objMail = Nothing Set objCDOSYSCon = Nothing end function showSendEmail '调用方法,发送邮件
%>
第二种调用JMail组件来发送邮件,调用这个组件来发送邮件时,
要注意一点,必须安装JMail组件后,才能发送邮件成功(之前一直没安装,发送总是报缺少对象错误)
JMail组件下载路径有:http://download.csdn.net/detail/tandaxia/8598007
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <% '定义发送邮件方法 Sub showJmail On Error Resume Next Dim JMail Set JMail = Server.CreateObject( "JMail.Message" ) JMail.silent= true JMail.Logging = True JMail.Charset = "gb2312" JMail.MailServerUserName = "xmTan@126.com" '邮箱登陆用户名 JMail.MailServerPassword = "*************" '邮箱密码 JMail.ContentType = "text/html" JMail.Priority = 1 JMail.From = "xmTan@126.com" '发件人邮件地址 JMail.FromName = "xmTan" '发件人姓名,可以和发件人邮件地址一样 JMail.AddRecipient "51851851851@qq.com" '收件人邮件地址 JMail.Subject = "Email Subject" '邮件主题 JMail.Body = "<h1>Email Content </h1>哈喽,发送成功了 ^_^" '邮件内容 JMail.Send ( "smtp.126.com" ) '邮箱SMTP服务器 Set JMail = Nothing SendMail = "OK" If Err Then SendMail = Err.Description Response.Write( "<h1>发送结果:" &SendMail& "</h1>" ) End Sub showJmail '调用方法,发送邮件 %> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?