C#使用CDO发送邮件

本文介绍如何利用Microsoft CDO for Exchange 2000 Library COM组件通过SMTP服务器发送电子邮件,并提供了一个具体的VB.NET示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可以引用的COM组件列表,发现里面有一个名为Microsoft CDO For Exchange 2000 Library的COM组件,就是这个,我们可以用它来连接SMTP Server,使用用户名/密码验证发送邮件。 

下面是实现的一个例子: 

Smtp Server使用的Smtp-SRV,登陆用户名是David Euler,发送邮箱是davidEuler@test.com,发送到test@test.com/ 


1).资源管理器里面,添加引用(reference),添加Microsoft CDO For Exchange 2000 Library的COM组件; 

2).编辑用户界面如上图,依次添加FromTextBox,ToTextBox,CCTextBox,BCCTextBox,SubjectTextBox,MessageTextBox,PasswordTextBox,smtpTextBox,设置MessageTextBox的TextMode属性为“MultiLine“, PasswordTextBox的TextMode属性为“Password“,并添加响应提示标签,添加发送按钮Send。 

3).输入用户名,密码,smtp server之后,用户点击Send按钮发送邮件, 
Send 按钮的Click事件代码如下: 
CDO.Message oMsg = new CDO.Message(); 
//oMsg.From = FromTextBox.Text ; 
oMsg.To = ToTextBox.Text ; 
oMsg.Subject = SubjectTextBox.Text ; 
oMsg.TextBody = MessageTextBox.Text ; 
oMsg.CC=CCTextBox.Text ; 
oMsg.BCC=BCCTextBox.Text ; 
string UserName; 
string emailFrom; 
string Password=PasswordTextBox.Text.ToString().Trim(); 

UserName=FromTextBox.Text.Trim(); 
emailFrom=UserName.Replace(" ","")+"@Test.com"; 
oMsg.From=emailFrom; 

CDO.IConfiguration iConfg; 
ADODB.Fields oFields; 
iConfg = oMsg.Configuration; 
oFields = iConfg.Fields; 

oFields["http://schemas.microsoft.com/cdo/configuration/sendusing"].Value=2; 
oFields["http://schemas.microsoft.com/cdo/configuration/sendemailaddress"].Value=emailFrom; 
oFields["http://schemas.microsoft.com/cdo/configuration/smtpuserreplyemailaddress"].Value=emailFrom; 
oFields["http://schemas.microsoft.com/cdo/configuration/smtpaccountname"].Value=UserName; 
oFields["http://schemas.microsoft.com/cdo/configuration/sendusername"].Value=UserName; 
oFields["http://schemas.microsoft.com/cdo/configuration/sendpassword"].Value=Password; 
oFields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"].Value=1; 
oFields["http://schemas.microsoft.com/cdo/configuration/smtpserver"].Value=smtpTextBox.Text.Trim(); //smtp.163.com 
oFields.Update(); 

try 

oMsg.Send(); 
oMsg = null; 
Response.Write("<script>alert('"+ "邮件发送成功!" +"');</script>"); 

catch (Exception ex) 

Response.Write("<script>alert('"+ "发送失败:" +"');</script>"); 

string exMsg="UserName:"+UserName+ 
" Passwd:"+Password+ 
" Smtp:"+smtpTextBox.Text.Trim(); 

Response.Write("<script>alert('"+ exMsg +"');</script>"); 
failedLabel.Text=ex.Message.ToString(); 

C#中,你可以使用System.Net.Mail命名空间下的CDO.Message类来发送电子邮件。这是一个基于COM组件的技术,虽然不是推荐的最佳实践,但在一些特定场景下可以使用。以下是发送邮件的基本步骤: 1. 引入必要的命名空间: ```csharp using System; using System.Net; using System.Net.Mail; using System.Runtime.InteropServices; ``` 2. 创建`MailMessage`实例并设置信息: ```csharp MailMessage message = new MailMessage(); message.From = new MailAddress("your_email@example.com"); message.To.Add("recipient_email@example.com"); message.Subject = "Subject of your email"; message.Body = "The content of your email"; ``` 3. 初始化`SmtpClient`对象,并指定SMTP服务器地址和端口: ```csharp SmtpClient smtpClient = new SmtpClient(); smtpClient.Host = "smtp.example.com"; // 你的SMTP服务器地址 smtpClient.Port = 587; // 或者465如果需要加密 ``` 4. 如果需要身份验证,添加登录信息: ```csharp smtpClient.Credentials = new NetworkCredential("your_username", "your_password"); ``` 5. 使用CDO.Message通过SMTP发送邮件: ```csharp // 使用CDO来创建邮件 object oMsg = Marshal.GetActiveObject("CDO.Application"); CDO.Message msg = (CDO.Message)oMsg.CreateItem(0); // 设置消息属性 msg.Subject = message.Subject; msg.HTMLBody = message.Body; // 将MailMessage转换为CDO.Message以便发送 msg.Session = smtpClient.Session; msg.SendUsingAccount = smtpClient.Credentials; // 发送邮件 msg.Send(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值