之前写的练习上传到阿里云的时候出现了一个问题,因为发送邮件使用的是默认的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);
}
文章评论