旅游行业怎么利用C#接口发送短信

旅游企业一般拥有众多的分支机构,同时各地分支机构又有众多下属分散在当地各区的旅游营业报名点,以前传统的解决方案是采用专线、MODEM拔号等方式,专线的成本很高,MODEM拔号更费时,且长途拔号互联成本在多点情况下费用也不低。相反的是,群发短信业务不仅费用低,且效率好。

支持免费试用乐讯通PaaS平台 找好用的短信平台,选择乐讯通,短信群发|短信平台|群发短信软件|群发短信平台|乐讯通PaaS平台http://yun.loktong.com/login/register/0c61bafb77

复制代码
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WinApiDemo
{
    class Program
    {
        private const string url = "http://www.lokapi.cn/smsUTF8.aspx";
        private const string urlReply = "http://www.lokapi.cn/callApi.aspx";
        private const string urlStatus = "http://www.lokapi.cn/statusApi.aspx";
        private const string urlBalance = "http://www.lokapi.cn/smsUTF8.aspx";
        private const string urlKeyword = "http://www.lokapi.cn/checkWord.aspx";
        private const string rece = "json";
        private const string username = "";
        private const string password = "";
        private const string encode = "utf-8";

        //token
        private const string tokenYZM = "";//验证码
        private const string tokenTZ = "";//通知
        private const string tokenYX = "";//营销
        private const string tokenMMS = "";//彩信
        private const string tokenVideo = "";//视频
        private const string tokenSX = "";//闪信
        private const string tokenVoice = "";//语音
        private const string tokenInter = "";//国际
        //模板ID
        private const string templateid = "";
        //参数
        private const string param = "17733861234|2541";

        private const string mobile = "";
        private const string title = "祝福短信";//彩信标题

        static void Main(string[] args)
        {
            string result = "";
            string sign = "";
            string passwordMd5 = Common.Md5Hash(password);
            string ticks = ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000).ToString();
            Encoding encoding = Encoding.GetEncoding(encode);

            StringBuilder sb = new StringBuilder();

            #region 文字短信
            sb.AppendFormat("action=sendtemplate&username={0}&password={1}&token={2}&timestamp={3}", username, passwordMd5, tokenYZM, ticks);
            sign = Common.Md5Hash(sb.ToString());
            sb.AppendFormat("&sign={0}&rece={1}", sign, rece);
            sb.AppendFormat("&templateid={0}&param={1}", templateid, param);
            result = Common.HttpPost(url, sb.ToString(), encoding);
            Console.WriteLine(result);
            #endregion

            #region 彩信
            sb.Clear();
            sb.AppendFormat("action=sendimagetext&username={0}&password={1}&token={2}&timestamp={3}", username, passwordMd5, tokenYZM, ticks);
            sign = Common.Md5Hash(sb.ToString());
            sb.AppendFormat("&sign={0}&rece={1}", sign, rece);
            sb.AppendFormat("&mobile={0}&title={1}", mobile, title);
            //彩信发送主体
            //文字
            string content = "祝你生日快乐";
            Encoding encodingGB = Encoding.GetEncoding("gb2312");
            byte[] txt_bytes = encoding.GetBytes(content);
            string txt = Convert.ToBase64String(txt_bytes);
            //图片
            string path = @"D:\我的文档\Pictures\11.jpg";
            string extension = "jpg";//图片后缀
            byte[] bytes = File.ReadAllBytes(path);
            string imgContent = System.Convert.ToBase64String(bytes);
            string message = string.Format("txt|{0},{1}|{2};", txt, extension, imgContent);
            message = message.Replace("%", "%25");
            message = message.Replace("&", "%26");
            message = message.Replace("+", "%2B");
            sb.AppendFormat("&message={0}", message);
            result = Common.HttpPost(url, sb.ToString(), encoding);
            Console.WriteLine(result);
            #endregion

            #region 视频
            sb.Clear();
            sb.AppendFormat("action=sendvideo&username={0}&password={1}&token={2}&timestamp={3}", username, passwordMd5, tokenYZM, ticks);
            sign = Common.Md5Hash(sb.ToString());
            sb.AppendFormat("&sign={0}&rece={1}", sign, rece);
            sb.AppendFormat("&mobile={0}&templateid={1}", mobile, templateid);
            result = Common.HttpPost(url, sb.ToString(), encoding);
            Console.WriteLine(result);
            #endregion

            #region 闪信
            sb.Clear();
            sb.AppendFormat("action=sendshanxin&username={0}&password={1}&token={2}&timestamp={3}", username, passwordMd5, tokenYZM, ticks);
            sign = Common.Md5Hash(sb.ToString());
            sb.AppendFormat("&sign={0}&rece={1}", sign, rece);
            sb.AppendFormat("&templateid={0}&param={1}", templateid, param);
            result = Common.HttpPost(url, sb.ToString(), encoding);
            Console.WriteLine(result);
            #endregion

            #region 语音
            sb.Clear();
            sb.AppendFormat("action=sendvoice&username={0}&password={1}&token={2}&timestamp={3}", username, passwordMd5, tokenYZM, ticks);
            sign = Common.Md5Hash(sb.ToString());
            sb.AppendFormat("&sign={0}&rece={1}", sign, rece);
            sb.AppendFormat("&templateid={0}&param={1}", templateid, param);
            result = Common.HttpPost(url, sb.ToString(), encoding);
            Console.WriteLine(result);
            #endregion

            #region 国际
            sb.Clear();
            sb.AppendFormat("action=sendinternation&username={0}&password={1}&token={2}&timestamp={3}", username, passwordMd5, tokenYZM, ticks);
            sign = Common.Md5Hash(sb.ToString());
            sb.AppendFormat("&sign={0}&rece={1}", sign, rece);
            sb.AppendFormat("&templateid={0}&param={1}", templateid, param);
            result = Common.HttpPost(url, sb.ToString(), encoding);
            Console.WriteLine(result);
            #endregion

            #region 文字回复报告
            sb.Clear();
            sb.AppendFormat("action=sms&username={0}&password={1}&timestamp={2}", username, passwordMd5, ticks);
            sign = Common.Md5Hash(sb.ToString());
            sb.AppendFormat("&sign={0}&rece={1}", sign, rece);
            result = Common.HttpPost(urlReply, sb.ToString(), encoding);
            Console.WriteLine(result);
            #endregion

            #region 状态报告
            sb.Clear();
            //action根据API文档选择合适产品的action
            sb.AppendFormat("action=sms&username={0}&password={1}&timestamp={2}", username, passwordMd5, ticks);
            sign = Common.Md5Hash(sb.ToString());
            sb.AppendFormat("&sign={0}&rece={1}", sign, rece);
            result = Common.HttpPost(urlStatus, sb.ToString(), encoding);
            Console.WriteLine(result);
            #endregion

            #region 余额查询
            sb.Clear();
            sb.AppendFormat("action=overage&username={0}&password={1}&token={2}&timestamp={3}", username, passwordMd5, tokenTZ, ticks);
            sign = Common.Md5Hash(sb.ToString());
            sb.AppendFormat("&sign={0}&rece={1}", sign, rece);
            result = Common.HttpPost(urlBalance, sb.ToString(), encoding);
            Console.WriteLine(result);
            #endregion

            #region 屏蔽词检测
            sb.Clear();
            sb.AppendFormat("username={0}&password={1}&timestamp={2}", username, passwordMd5, ticks);
            sign = Common.Md5Hash(sb.ToString());
            sb.AppendFormat("&sign={0}&rece={1}&message={2}", sign, rece, "您的验证码是5412");
            result = Common.HttpPost(urlKeyword, sb.ToString(), encoding);
            Console.WriteLine(result);
            #endregion

            Console.ReadKey();
        }
    }
}

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace WinApiDemo
{
    public class Common
    {
        public static string HttpPost(string Url, string Body, Encoding encode)
        {
            string ResponseContent = "";

            try
            {
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(Url);

                httpWebRequest.ContentType = "application/x-www-form-urlencoded";
                httpWebRequest.Method = "POST";
                httpWebRequest.Timeout = 600000; //setInstanceFollowRedirects

                byte[] btBodys = encode.GetBytes(Body);
                httpWebRequest.ContentLength = btBodys.Length;

                Stream reqStream = httpWebRequest.GetRequestStream();
                reqStream.Write(btBodys, 0, btBodys.Length);

                HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();

                Stream resStream = httpWebResponse.GetResponseStream();
                StreamReader streamReader = new StreamReader(resStream, encode);
                ResponseContent = streamReader.ReadToEnd();

                streamReader.Close();
                resStream.Close();
                reqStream.Close();

                streamReader.Dispose();
                resStream.Dispose();
                reqStream.Dispose();

                httpWebResponse.Close();
                httpWebResponse.Dispose();
                httpWebRequest.Abort();
            }
            catch (Exception ex)
            {
                return ex.ToString();
            }
            return ResponseContent;
        }

        public static string Md5Hash(string input)
        {
            MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
            byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
            StringBuilder sBuilder = new StringBuilder();
            for (int i = 0; i < data.Length; i++)
            {
                sBuilder.Append(data[i].ToString("x2"));
            }
            return sBuilder.ToString().ToUpper();
        }

    }
}

服务信息:发布旅游信息,吸引客户,这种方式费用低,效率好。景区宣传:可对旅游景区(点)或旅游公司新推出的旅游路线进行描述,通过短信发送到潜在顾客的手机上,实现对旅游产品及服务的跨区域、跨时空宣传。

订房/订票公司、旅行社可以通过短信通向客户发送消费积分、节日祝福、生日祝贺等,实现低成本有效的客户管理,加强客情沟通、提高客户满意度,提高营业收入。

相关推荐
大飞pkz5 分钟前
【C#】正则表达式
开发语言·正则表达式·c#·string·字符串匹配·高效字符串匹配
Jacob02345 分钟前
Python与PostgreSQL实战:打造实时地理空间数据处理与管理系统
javascript·python·postgresql
二闹14 分钟前
Map穿越JSON边境后惨遭“洗白”?前端:我只认识Object!
javascript·后端
ze_juejin14 分钟前
Fetch API 详解
前端
用户669820611298223 分钟前
js今日理解 blob和arrayBuffer 二进制数据
前端·javascript
想想肿子会怎么做26 分钟前
Flutter 环境安装
前端·flutter
断竿散人26 分钟前
Node 版本管理工具全指南
前端·node.js
转转技术团队27 分钟前
「快递包裹」视角详解OSI七层模型
前端·面试
1024小神32 分钟前
Ant Design这个日期选择组件最大值最小值的坑
前端·javascript
卸任33 分钟前
Electron自制翻译工具:自动更新
前端·react.js·electron