C#使用CDO发送邮件

本文介绍如何利用Microsoft CDO for Exchange 2000 Library COM组件实现通过SMTP服务器发送电子邮件的过程。具体步骤包括添加组件引用、配置用户界面及编写发送邮件的代码。

摘要生成于 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(); ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值