| [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; }
 }
 |