写了一个小程序,但是遇到了很多问题,菜鸟还需要努力!

首先是邮件发送程序:

第一步 老是报错:服务器不支持安全连接。老是认为是连接orcale出了问题,找了半天.net连接orcale字符串,改了又改,还是报错。最后百度一看,原来是sc.EnableSsl = true;这句话给惹的,我使用的139邮箱不支持这个连接方式。然后就可以发邮件了

第二步:但是又出现一个问题,前几封还可以发出去,后面就说:发送失败或者是超时。搞不清楚什么原因呢,不应该啊,后来发现是sc.TimeOut = 10;这个属性设置太小了,所以当我定时发短信时候,老是说超时,总结以上,自己太粗心了,很简单的问题,报错要仔细研究报错信息,其实都是和属性或者方法有关系的

第三步:我要把这个小程序放到服务器上,服务器报错说.net 没有合适的组件。我用的是4.0,他的却是1.0.于是下载一个4.0去装,又说服务器环境不能装4.0要配置其他组件才可以。太麻烦。于是又搞个3.5,终于装上了。把自己的用3.5又编译了一下

第四步:邮件居然没反映,也不报错,真是奇怪了,把代码拷贝其他服务器上一试OK,那就是这台机器的问题了,于是ping一下smtp.139.com,不通,原来这个机器没有开通端口,不能用139来发邮件,后来同事沟通了一下,又重新给了内网中一个可用的邮箱服务器IP

第五步:还是报错:说身份验证失败,搞了半天,怎么回事呢,原来,服务器我换掉了,发件人,以及用户名密码,还是139的,这怎么可以呢,这个问题居然忽略了!太笨了。于是又向同事要一个账户,结果因为这个邮件服务器是客户的,我们不能用,好吧,最后不发邮件了,只发短信吧。

 public static void SendMail()
        {
           
            MailAddress from = new MailAddress("15280007999@139.com");
            string to = "15280007999@139.com";
            MailMessage message = new MailMessage();
            message.From = from;
            message.To.Add(to);              //收件人邮箱地址可以是多个以实现群发
            message.Subject = "存储过程报错";
            //message.Body =GetContent("ORCL_10.210.17.55");
            message.Body = "测试邮件";          

            message.IsBodyHtml = true;              //是否为html格式

            SmtpClient sc = new SmtpClient();
            sc.Host = "smtp.139.com";              //指定发送邮件的服务器地址或IP
            sc.EnableSsl = true;
            sc.UseDefaultCredentials = false;
            sc.Credentials = new System.Net.NetworkCredential("15280007999@139.com","0927"); //指定登录服务器的用户名和密码
            if (message.Body!="")
            {
                try
                {
                    sc.Send(message);      //发送邮件
                    Console.WriteLine("邮件发送成功!");

                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
               
            }
            else
            {
                Console.WriteLine("没有报错,邮件不需要发送!");
           
           
            }        
        }

发短信小程序:

第一步:.net连接orcale  (4.0以后就不支持orcale自带的方法了。),我添加一个引用(我用的是orcale10),Oracle.DataAccess.dll,连接没问题,在自己机器上测试怎么着都不能发短信,最后发现是因为短信机被限制了,只能拿到服务器测试

第二步:拿过去报错,说缺少OraOps10.dll组件,查了半天,是因为我本机上是orcale10,但是服务器上是9,所以报错,试了很多办法,把组件拷贝到9目录下,不管用,最后发现,换个组件引用试试,就用了System.Data.OracleClient.dll,这个貌似是9的,终于不报错了,这个组件很容易就搞到,其中低版本的framework安装目录下就可以找到,应用一下就Ok

第三步:还是报错,连初始化都报错,连不上短信机,最后发现是引用的短信发送两个组件旧版本坏掉了,换了个新版本试试,OK,

第四步:配置好TNS,还是报错,说无法解析TNS,用tnsping,果然不通,但是我自己的机器是可以的啊,只是9和10的差别,然后有复制了一下,再试试就通了,太奇怪了,可能是第一次复制出错了。到此短信总算可以了。

 public static void SendMessage()
        {
          
            APIClient apiclient = new APIClient();
            int conn = apiclient.init("10.46.1.136","zhgj","Zhjk","hgj","mas");
            Console.WriteLine(conn);
            String[] tmpMobiles = new String[] {"15280007963"};
            long smid = 0;
            string content = GetContent("ORCL_10.210.17.55");
            int sm = 1;
            if (content != "")
            {
                sm = apiclient.sendSM(tmpMobiles, content, smid);//不带srcID的PDU短信
                if (sm == 0)
                {
                    Console.WriteLine("短信发送成功!");

                }
                //Console.Read();
            }
            else
            {
                Console.WriteLine("没有报错,信息不需要发送!");


            }        
        }