微信公众号之发送微信模板--.net core 5.0

static public string Template(string openId, string studentTel, string studentName, string source)
{
//从配置中提取后台域名
var apolloData = ApolloToConfigure.Get();
var siteUrl = apolloData.AdminMobileUrl;
var model = new TemplateMessage();
model.template_id = "模板id";
//页面跳转链接url
model.url = siteUrl;
model.topcolor = "#333";
model.touser = openId;
var name = string.IsNullOrEmpty(studentName) ? studentTel : studentName;

model.data = new
{
first = new
{
value = "你好!欢迎注册",
color = "#173177"
},
keyword1 = new//提交时间
{
value =$"注册时间["+ DateTime.Now.ToString("yyyy-MM-dd HH:mm")+"]",
color = "#173177"
},
keyword2 = new//提交内容
{
value = $"名称[" + name + "]通过[" + source + "]注册",
color = "#173177"
},
keyword3 = new//处理结果
{
value = $"注册成功!",
color = "#173177"
},
remark = new
{
value = $"请及时分配处理",
color = "#173177"
}
};
return Newtonsoft.Json.JsonConvert.SerializeObject(model);
}


/// <summary>
/// 发送微信消息
/// </summary>
/// <returns></returns>
public Tuple<bool, string> SendWeChatMessage(string message, string title)
{
try
{
var _access_token = Get_Access_token();
var response = Send_Message(message, _access_token);
//_logger.Info(response.errcode == "0" ? title + "微信消息发送成功" : title + "微信消息发送失败", response.errmsg);
if (response.errcode == "0") return Tuple.Create(true, "微信消息发送成功");
return Tuple.Create(false, response.errmsg);

}
catch (Exception ex)
{
_logger.Error(title + "微信消息发送失败", ex.Message);
return Tuple.Create(false, ex.Message);
}
}

/// <summary>
/// 微信消息发送URL
/// </summary>
protected string GetSendUrl
{
get
{
return "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
}
}


/// <summary>
/// 同步发送微信消息
/// </summary>
/// <param name="messages">消息内容(JSON字符串)</param>
protected ResultMsg Send_Message(string messages, string _access_token = null)
{
if (string.IsNullOrEmpty(_access_token))
{
_access_token = Get_Access_token();
}
var _sendUrl = GetSendUrl + _access_token;
var results = WebServiceApi.PostServer(_sendUrl, messages);
return Newtonsoft.Json.JsonConvert.DeserializeObject<ResultMsg>(results);
}

//发送消息到服务器
/// <summary>
/// Post请求(同步)
/// </summary>
/// <param name="posturl">URL</param>
/// <param name="postData">请求数据</param>
/// <returns></returns>
public static string PostServer(string posturl, string postData)
{
Stream outstream = null;
Stream instream = null;
StreamReader sr = null;
HttpWebResponse response = null;
Encoding encoding = Encoding.UTF8;
byte[] data = encoding.GetBytes(postData);
// 准备请求...
try
{
// 设置参数
HttpWebRequest request = WebRequest.Create(posturl) as HttpWebRequest;
CookieContainer cookieContainer = new CookieContainer();
request.CookieContainer = cookieContainer;
request.AllowAutoRedirect = true;
request.Method = "POST";
request.ContentType = "text/xml;charset=utf-8";// "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
outstream = request.GetRequestStream();
outstream.Write(data, 0, data.Length);
//发送请求并获取相应回应数据
response = request.GetResponse() as HttpWebResponse;
//直到request.GetResponse()程序才开始向目标网页发送Post请求
instream = response.GetResponseStream();
sr = new StreamReader(instream, encoding);
//返回结果网页(html)代码
string content = sr.ReadToEnd();
//Response.Write(content);
return content;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (outstream != null)
{
outstream.Dispose();
outstream.Close();
}
if (instream != null)
{
instream.Dispose();
instream.Close();
}
if (sr != null)
{
sr.Dispose();
sr.Close();
}
if (response != null)
{
response.Dispose();
response.Close();
}

}
}

posted @ 2022-05-20 10:52  ^-^YoYo  阅读(159)  评论(0编辑  收藏  举报