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  '调用方法,发送邮件
 
%>

  

posted @   谈晓鸣  阅读(548)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示