[英]How can I receive a HTTP POST in ASP.NET C# from Mailgun?
http://documentation.mailgun.net/quickstart.html包含Django中http處理程序的一些示例代碼:
# Handler for HTTP POST to http://myhost.com/messages for the route defined above
def on_incoming_message(request):
if request.method == 'POST':
sender = request.POST.get('sender')
recipient = request.POST.get('recipient')
subject = request.POST.get('subject', '')
body_plain = request.POST.get('body-plain', '')
body_without_quotes = request.POST.get('stripped-text', '')
# note: other MIME headers are also posted here...
# attachments:
for key in request.FILES:
file = request.FILES[key]
# do something with the file
# Returned text is ignored but HTTP status code matters:
# Mailgun wants to see 2xx, otherwise it will make another attempt in 5 minutes
return HttpResponse('OK')
ASP.NET C#中的等價物是什么?
我曾嘗試過Request.Form [“sender”],但Mailgun日志記錄了一個HTTP 500錯誤代碼。
謝謝你的幫助。
主要我希望我能在大約6小時前找到這個...
如果您使用mvc和剃刀視圖引擎,則需要執行以下操作
[HttpPost]
[ValidateInput(false)]
public ActionResult GoTruckGo(FormCollection oColl)
{
try
{
string sender = Request.Unvalidated().Form["sender"];
string body = Request.Unvalidated().Form["body-plain"];
sendLog(body);
// do something with data
}
catch (Exception ex)
{
sendLog("entered catch = "+ ex.Message);
}
return Content("ok");
}
我需要在page指令中將ValidateRequest設置為false。
示例代碼 -
sms.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="sms.aspx.cs" EnableEventValidation="false" ValidateRequest="false" Inherits="sms" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<p>SMS</p>
</form>
</body>
</html>
sms.aspx.cs
public partial class sms : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string subject = Request.Params["subject"];
string message = Request.Params["body-plain"];
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["YOURCONNECTIONSTRING"].ConnectionString))
{
cn.Open();
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.Text;
cm.CommandText = "INSERT INTO SMS (subject, message, DateTime) VALUES (@Subject, @Message, @Dateandtime);";
cm.Parameters.Add("@Subject", SqlDbType.NVarChar).Value = subject;
cm.Parameters.Add("@Message", SqlDbType.NVarChar).Value = message;
cm.Parameters.Add("@Dateandtime", SqlDbType.DateTime).Value = DateTime.Now.ToString();
SqlDataReader dr = cm.ExecuteReader();
dr.Dispose();
cm.Dispose();
}
}
}
}
希望這可以幫助其他人使用Mailgun和C#。
我的VB.Net版
' Get form data?
Dim message As String = String.Empty
Dim mailgun As NameValueCollection = Request.Form
Dim key As String
Dim values() As String
For Each key In mailgun.Keys
values = mailgun.GetValues(key)
For Each value As String In values
' create a new string
message &= key & "-" & value & "|"
' MsgBox(key & " - " & value)
Next value
Next key
' save message
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.