通过@Swift的答案是正确的。这是我使用MVC web表单的答案。更换Console.WriteLine命令等
<div class="form">
<input class="input-text" type="text" id="RecipientName" name="RecipientName" value="Your Name *" onFocus="if(this.value==this.defaultValue)this.value='';" onBlur="if(this.value=='')this.value=this.defaultValue;">
<input class="input-text" type="text" id="RecipientEmail" name="RecipientEmail" value="Your E-mail *" onFocus="if(this.value==this.defaultValue)this.value='';" onBlur="if(this.value=='')this.value=this.defaultValue;">
<textarea class="input-text text-area" id="RecipientMessage" name="RecipientMessage" cols="0" rows="0" onFocus="if(this.value==this.defaultValue)this.value='';" onBlur="if(this.value=='')this.value=this.defaultValue;">Your Message *</textarea>
<input class="input-btn" type="submit" id="EmailSendButton" name="EmailSendButton" value="send message" onclick="EmailData()">
<div id="EmailConfirmation"></div>
</div>
<script>
function EmailData() {
$("#EmailSendButton").attr("disabled", "true");
var url = "/Main/EmailData";
var recipientName = $("#RecipientName").val();
var recipientEmail = $("#RecipientEmail").val();
var recipientMessage = $("#RecipientMessage").val();
var postData = { 'Name': recipientName, 'Email': recipientEmail, 'Message': recipientMessage }
$.post(url, postData, function (result) {
$("#EmailConfirmation").css({ 'display': 'block' });
$("#EmailConfirmation").text(result);
$("#EmailConfirmation").fadeIn(2000)
})
}
</script>
视图模型
public class EmailDataViewModel
{
public string Name { get; set; }
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
public string Message { get; set; }
}
控制器
public string EmailData(EmailDataViewModel viewModel)
{
string api_user = "username";
string api_key = "password";
string toAddress = "[email protected]";
string toName = "Administrator";
string subject = "Message from your web app";
string text = viewModel.Name + " " + viewModel.Message;
string fromAddress = viewModel.Email;
string url = "https://sendgrid.com/api/mail.send.json";
// Create a form encoded string for the request body
string parameters = "api_user=" + api_user + "&api_key=" + api_key + "&to=" + toAddress +
"&toname=" + toName + "&subject=" + subject + "&text=" + text +
"&from=" + fromAddress;
try
{
//Create Request
HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
myHttpWebRequest.Method = "POST";
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
// Create a new write stream for the POST body
StreamWriter streamWriter = new StreamWriter(myHttpWebRequest.GetRequestStream());
// Write the parameters to the stream
streamWriter.Write(parameters);
streamWriter.Flush();
streamWriter.Close();
// Get the response
HttpWebResponse httpResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
// Create a new read stream for the response body and read it
StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream());
string result = streamReader.ReadToEnd();
// Write the results to the console
Console.WriteLine(result);
}
catch (WebException ex)
{
// Catch any execptions and gather the response
HttpWebResponse response = (HttpWebResponse)ex.Response;
// Create a new read stream for the exception body and read it
StreamReader streamReader = new StreamReader(response.GetResponseStream());
string result = streamReader.ReadToEnd();
// Write the results to the console
Console.WriteLine(result);
}
return "Successful";
}
嗨感谢响应,这是修改 “的ContentType” 之后现在的工作和参数编码。我还有一个问题“如何发送附件像TXT,PDF ......”提前致谢。 – user1547639 2012-07-25 07:06:41
@Swift我在使用你的代码后得到错误“不良请求(400)”......可能是什么原因? – Steve 2016-07-12 11:19:28
如何附加文件? – 2016-10-20 05:47:59