C#邮件发送CDO的COM组件发送方式

当使用C#的System.Net.Mail组件在阿里云专有网络发送邮件失败时,由于25端口被禁用,推荐使用CDO的COM组件。阿里云建议使用其企业邮箱,但有免费选项。本文提供了使用CDO组件的代码示例,解决无法通过465端口加密发送邮件的.NET Framework bug问题。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值