C#使用CDO发送邮件 Author:David Euler Date: 2004 / 11 / 18 Email:de_euler - david@yahoo.com.cn 有任何问题,请与我联系:) 一直想做实现一个程序,定期给自己发送邮件,或者给朋友发送邮件;比如在节日或者纪念日前若干天,发送邮件给自己提醒,或者朋友生日前夕发邮件提醒。找了很长时间,都没有找到可用的资料。 CSDN上查到可以用CDO,有一篇文章说“在reference中添加CDO for Windows 2000 ”,于是在引用里面找,也没有找到一个名字以CDO开头的组件,下午的时候仔细看了一下可以引用的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(); }