C#邮件发送CDO的COM组件发送方式
2017-03-17 16:00
323 查看
C#邮件发送CDO的COM组件
System.Net.Mail
一开始使用自带Mail组件能正常发送邮件,直到用阿里云的专有网络的时候就出现问题,邮件不能正常发送,提示无语的“邮件发送失败”,没有其他异常信息,无从可查,你可能会看到这种提示http://bbs.csdn.net/topics/320204856。最后了解到原来阿里云坑爹的专有网络自动禁用了25端口(没提示的,要自己找帮助中心),然后会提示你可以尝试申请开通25端口,事实证明是一本正经的胡说八道,以后不用申请了,因为专有网络怎么都不会给你开通的,然后会推荐你几种方式
1、阿里云:邮件可开放80端口
2、可使用465端口或993+SSL加密(我的网易的)
再次证明阿里的忽悠能力
最后会跟你说可以用我们阿里的邮箱,可以用80端口和465端口
这是你才知道说了半天就是要你用阿里的邮箱(因为.net确实会有问题),然而企业邮箱的费用大家可以看看阿里的https://exmail.aliyun.com/企业邮箱介绍,最低600RMB,这是各位请特别注意!!!你有可能又掉入阿里的坑了,如果你真正要用阿里企业邮箱的没问题,如果你只是要用阿里的企业邮箱发邮件而已的,请忽略这连接
真正的连接在这里https://wanwang.aliyun.com/mail/freemail/,阿里有免费的企业邮箱,只是绑定了一个6元的推送包。
注:为啥说.net有问题,你得去查查了,网上资料说明情况在这块465端口加密发送不了的是因为.net framework本身的bug,这块我就没研究了
这里才是真正的开始,以上都是我的吐槽
终极解决方案
1、使用阿里邮箱2、使用CDO的COM组件发送
第一点上面的废话已经说了,重点说第二种,直接上代码:
代码块
引用CDO,例如:CDO.Message oMsg = new CDO.Message(); //CDO.IConfiguration iConfg; //iConfg = oMsg.Configuration; //ADODB.Fields oFields; //oFields = iConfg.Fields; Configuration conf = new ConfigurationClass(); conf.Fields[CdoConfiguration.cdoSendUsingMethod].Value = CdoSendUsing.cdoSendUsingPort; conf.Fields[CdoConfiguration.cdoSMTPAuthenticate].Value = CdoProtocolsAuthentication.cdoBasic; conf.Fields[CdoConfiguration.cdoSMTPUseSSL].Value = true; conf.Fields[CdoConfiguration.cdoSMTPServer].Value = "邮箱服务地址";//必填,而且要真实可用 conf.Fields[CdoConfiguration.cdoSMTPServerPort].Value = 465;//邮箱端口 conf.Fields[CdoConfiguration.cdoSendEmailAddress].Value = "<xxx@xxx>";//发送者邮箱 conf.Fields[CdoConfiguration.cdoSendUserName].Value = "xxx@xxx";//邮箱发送者名称 conf.Fields[CdoConfiguration.cdoSendPassword].Value = "xxxxxx"; //邮箱发送者密码,必须真实 conf.Fields.Update(); oMsg.Configuration = conf; oMsg.TextBody = "Hello, how are you doing?";//邮件正文 //TODO: To send HTML body, uncomment the following lines: //String sHtml; //sHtml = "<HTML>\n" + // "<HEAD>\n" + // "<TITLE>Sample GIF</TITLE>\n" + // "</HEAD>\n" + // "<BODY><P>\n" + // "<h1><Font Color=Green>Inline graphics</Font></h1>\n" + // "</BODY>\n" + // "</HTML>"; //oMsg.HTMLBody = sHtml; //TOTO: To send WEb page in an e-mail, uncomment the following lines and make changes in TODO section. //TODO: Replace with your preferred Web page //oMsg.CreateMHTMLBody("http://www.microsoft.com", // CDO.CdoMHTMLFlags.cdoSuppressNone, // "", ""); oMsg.Subject = "Test SMTP";//主题 //TODO: Change the To and From address to reflect your information. oMsg.From = "xxx@xxx";//发送者 oMsg.To = "xxx@xxx";//接收者 //ADD attachment. //TODO: Change the path to the file that you want to attach. //oMsg.AddAttachment("C:\Hello.txt", "", ""); //oMsg.AddAttachment("C:\Test.doc", "", ""); oMsg.Send();//发送
注释的为其他设置,可以不用
注意:你可能会发现编码好了后生成不了,这时候你会遇到这个问题 “在引用COM组件的时候,出现了无法嵌入互操作类型“xxxxx””
解决方案很简单,选中项目中引入的dll,鼠标右键,选择属性,把“嵌入互操作类型”设置为False。
到此结束,OVER
相关文章推荐
- vs.net2005中使用利用cdo.message发送邮件(以asp.net/c#为例)
- C# 发送邮件的几种方式
- [置顶] C# 邮件发送方法【NetMail方式】
- C# 邮件发送方法【webMail方式】
- 使用Net.Mail、CDO组件、JMail组件三种方式发送邮件
- C#使用CDO发送邮件
- [置顶]C# 邮件发送方法【NetMail方式】
- 如何在代理环境下发送邮件?——C#实现Socket代理方式的邮件发送
- C# 邮件发送方法【webMail方式】
- C# 邮件发送方法【NetMail方式】
- C#使用CDO发送邮件
- C#使用CDO发送邮件
- [置顶] C# 邮件发送方法【webMail方式】
- [导入]C#使用CDO发送邮件
- C#使用CDO发送邮件
- 如何在代理环境下发送邮件?——C#实现Socket代理方式的邮件发送
- [置顶]C# 邮件发送方法【webMail方式】
- C#使用CDO发送邮件
- C#使用CDO发送邮件 注意事项!!!
- C# Smtp方式发送邮件