[ArgumentNullException: Value cannot be null.
Parameter name: s]
System.Convert.FromBase64String(String s) +10739518
EmailSender.Controllers.<Contact>d__4.MoveNext() +348
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) +84
System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeAsynchronousActionMethod>b__36(IAsyncResult asyncResult) +17
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32
System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +50
System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +225
System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +34
System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +26
System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +39
System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +28
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +29
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +31
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9514812
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
Home Controller:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
[HttpGet]
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Contact(EmailFormModel model)
{
if (ModelState.IsValid)
{
var body = "<p>Email From: {0} ({1})</p><p>Message:</p><p>{2}</p>";
var message = new MailMessage();
message.To.Add(model.FromEmail);
message.Subject = "Your email subject";
message.Body = string.Format(body, model.FromName, model.FromEmail, model.Message);
message.IsBodyHtml = true;
string base64 = model.newImageData;
byte[] imagebytes = Convert.FromBase64String(base64);
message.Attachments.Add(new Attachment(new MemoryStream(imagebytes), "Image1"));
using (var smtp = new SmtpClient())
{
smtp.SendAsync(message, null);
await smtp.SendMailAsync(message);
return RedirectToAction("Sent");
}
}
return View(model);
}
public ActionResult Sent()
{
return View();
}
}
Contact.cshtml (View) has this:
@model EmailSender.Models.EmailFormModel
@{
ViewBag.Title = "Contact";
}
<h2>@ViewBag.Title.</h2>
@using (Html.BeginForm("Contact", "Home", null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
//@Html.ValidationSummary(true)
@Html.AntiForgeryToken()
<h4>Send your comments.</h4>
<hr />
<div class="form-group">
@Html.LabelFor(m => m.FromName, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.FromName, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.FromName)
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.FromEmail, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.FromEmail, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.FromEmail)
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Message, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextAreaFor(m => m.Message, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Message)
</div>
</div>
<script language="JavaScript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script language="JavaScript" src="https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
<script language="JavaScript" src="~/Scripts/ScriptCam/scriptcam.js"></script>
<script language="JavaScript" type="text/javascript">
$(document).ready(function () {
$("#webcam").scriptcam({
showMicrophoneErrors: false,
onError: onError,
cornerRadius: 20,
cornerColor: 'e3e5e2',
onWebcamReady: onWebcamReady,
uploadImage: 'upload.gif',
onPictureAsBase64: base64_tofield_and_image
});
});
function base64_tofield() {
$('#formfield').val($.scriptcam.getFrameAsBase64());
$('#UploadBase64').val($.scriptcam.getFrameAsBase64());
return false;
};
function base64_toimage() {
$('#image').attr("src", "data:image/png;base64," + $.scriptcam.getFrameAsBase64());
$('#UploadBase64').val($.scriptcam.getFrameAsBase64());
//Note: Uncomment Above line and remove below three lines, I have just used dummy base64 image
//var base64 = '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';
//$('#image').attr("src", "data:image/png;base64," + base64);
//$('#UploadBase64').val(base64);
return false;
};
function base64_tofield_and_image(b64) {
$('#formfield').val(b64);
$('#image').attr("src", "data:image/png;base64," + b64);
$('#UploadBase64').val(b64);
return false;
};
function changeCamera() {
$.scriptcam.changeCamera($('#cameraNames').val());
return false;
}
function onError(errorId, errorMsg) {
$("#btn1").attr("disabled", true);
$("#btn2").attr("disabled", true);
alert(errorMsg);
return false;
}
function onWebcamReady(cameraNames, camera, microphoneNames, microphone, volume) {
$.each(cameraNames, function (index, text) {
$('#cameraNames').append($('<option></option>').val(index).html(text))
});
$('#cameraNames').val(camera);
return false;
}
</script>
<div class="form-group">
<div>
<div id="webcam">
</div>
<div style="margin: 5px;">
<img src="../../webcamlogo.png" style="vertical-align: text-top" />
<select id="cameraNames" size="1" onchange="return changeCamera()" style="width: 245px;
font-size: 10px; height: 25px;">
<option label="Select" value="0"></option>
</select>
</div>
</div>
<div>
<p>
<input type="button" class="btn btn-small" value="Snapshot to form" onclick="return base64_tofield()" />
<p>
<input type="button" class="btn btn-small" value="Snapshot to image" onclick="return base64_toimage()" />
</div>
<div>
<p>
<textarea id="formfield" style="width: 190px; height: 70px;"></textarea>
</p>
<p>
<img id="image" style="width: 200px; height: 153px;" />
</p>
</div>
</div>
<br />
<br />
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-default" value="Send" />
</div>
</div>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
and my EmailFormModel.cs has this:
public class EmailFormModel
{
[Required, Display(Name = "Your name")]
public string FromName { get; set; }
[Required, Display(Name = "Your email"), EmailAddress]
public string FromEmail { get; set; }
[Required]
public string Message { get; set; }
public HttpPostedFileBase Upload { get; set; }
public string newImageData { get; set; }
}
|