旅游行业怎么利用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();
        }

    }
}

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

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

相关推荐
在下不上天1 分钟前
Flume日志采集系统的部署,实现flume负载均衡,flume故障恢复
大数据·开发语言·python
陌小呆^O^14 分钟前
Cmakelist.txt之win-c-udp-client
c语言·开发语言·udp
dr李四维16 分钟前
iOS构建版本以及Hbuilder打iOS的ipa包全流程
前端·笔记·ios·产品运营·产品经理·xcode
I_Am_Me_30 分钟前
【JavaEE进阶】 JavaScript
开发语言·javascript·ecmascript
雯0609~37 分钟前
网页F12:缓存的使用(设值、取值、删除)
前端·缓存
重生之我是数学王子40 分钟前
QT基础 编码问题 定时器 事件 绘图事件 keyPressEvent QT5.12.3环境 C++实现
开发语言·c++·qt
℘团子এ40 分钟前
vue3中如何上传文件到腾讯云的桶(cosbrowser)
前端·javascript·腾讯云
Ai 编码助手42 分钟前
使用php和Xunsearch提升音乐网站的歌曲搜索效果
开发语言·php
学习前端的小z1 小时前
【前端】深入理解 JavaScript 逻辑运算符的优先级与短路求值机制
开发语言·前端·javascript
神仙别闹1 小时前
基于C#和Sql Server 2008实现的(WinForm)订单生成系统
开发语言·c#