之前写的练习上传到阿里云的时候出现了一个问题,因为发送邮件使用的是默认的 25 端口,but 阿里云禁止了所有服务器的 25 端口,这就导致了邮件不能正常发送,然后我从网上搜索了好几个发送方法都是有各种问题,最后找到了使用 CDO 发送邮件的方法,但是当上传到服务器之后依然有问题。
首先要在项目引用里添加引用 Microsoft CDO For Exchange 2000 Library 引用之后在属性这个引用属性里面点击 嵌入互操作类型 设置成 false,还没完,这时候点击另一个引用 ADODB 的嵌入互操作类型 设置为 false,否则会报错 找不到文件或程序集名称 「Interop.ADODB」,或找不到它的一个依赖项
string host = "smtp.163.com";// 邮件服务器 smtp.163.com 表示网易邮箱服务器
string userName = "test@163.com";// 发送端账号
string password = "test";// 发送端密码(这个客户端重置后的密码)
CDO.Message oMsg = new CDO.Message();
Configuration conf = new ConfigurationClass();
conf.Fields[CdoConfiguration.cdoSendUsingMethod].Value = CdoSendUsing.cdoSendUsingPort;
conf.Fields[CdoConfiguration.cdoSMTPAuthenticate].Value = CdoProtocolsAuthentication.cdoBasic;
conf.Fields[CdoConfiguration.cdoSMTPUseSSL].Value = true; // 启用 ssl
conf.Fields[CdoConfiguration.cdoSMTPServer].Value = host;// 必填,而且要真实可用
conf.Fields[CdoConfiguration.cdoSMTPServerPort].Value = 465;//465 特有
conf.Fields[CdoConfiguration.cdoSendEmailAddress].Value = "<" + userName + ">";
conf.Fields[CdoConfiguration.cdoSendUserName].Value = userName;// 真实的邮件地址
conf.Fields[CdoConfiguration.cdoSendPassword].Value = password; // 为邮箱密码,必须真实
conf.Fields.Update();
oMsg.Configuration = conf;
oMsg.HTMLBody = "测试";
oMsg.Subject = "测试";
oMsg.From = userName;
oMsg.To = "uwpgrn54821@chacuo.net";
try
{oMsg.Send();
}
catch (Exception aa)
{MessageBox.Show(aa.Message);
}
正文完