Ejemplo n.º 1
0
        public static void OpenSender(string path, Action success, Action <string> error)
        {
#if __IOS__
            string[] split = path.Split('/');
            string   name  = split[split.Length - 1];

            var stream = new MemoryStream(FileUtils.PathToByteData(path));

            NSData data = NSData.FromStream(stream);

            try
            {
                MFMailComposeViewController controller = new MFMailComposeViewController();

                controller.SetSubject("Style: " + name);
                controller.SetMessageBody("Date: " + DateTime.Now.ToString("F"), false);
                controller.AddAttachmentData(data, "application/zip", name);

                controller.Finished += (object sender, MFComposeResultEventArgs e) =>
                {
                    string message = "";

                    if (e.Result == MFMailComposeResult.Sent)
                    {
                        message = "Mail sent";
                        success();
                    }
                    else if (e.Result == MFMailComposeResult.Failed)
                    {
                        message = "Failed :" + e.Error;
                    }
                    else if (e.Result == MFMailComposeResult.Cancelled)
                    {
                        message = "Cancelled";
                    }
                    else if (e.Result == MFMailComposeResult.Saved)
                    {
                        message = "Saved";
                        success();
                    }

                    Toast.Show(message, new BaseView());
                    controller.DismissViewController(true, null);
                };

                Controller.PresentViewController(controller, true, null);
            }
            catch
            {
                //error("You don't seem to have any mail clients set up");
            }
#elif __ANDROID__
            Intent intent = new Intent(Intent.ActionSend);
            intent.SetType("application/zip");

            intent.PutExtra(Intent.ExtraStream, Android.Net.Uri.Parse(path));

            Context.StartActivity(Intent.CreateChooser(intent, "Share zip"));
#endif
        }
Ejemplo n.º 2
0
        public void Show(string to = null, string subject = null, string body = null)
        {
            if (!MFMailComposeViewController.CanSendMail)
            {
                Alert.ShowErrorBox("Email is not setup correctly on this device");
                return;
            }

            var mail = new MFMailComposeViewController ();
            mail.ModalPresentationStyle = UIModalPresentationStyle.FormSheet;
            mail.Finished += delegate {
                mail.DismissViewController(true, null);
            };

            if (!string.IsNullOrEmpty(to))
                mail.SetToRecipients(new string[] { to });

            if (!string.IsNullOrEmpty (subject))
                mail.SetSubject (subject);

            if (!string.IsNullOrEmpty (body))
                mail.SetMessageBody (body, true);

            _c.PresentViewController(mail, true, null);
        }
Ejemplo n.º 3
0
            public override void Finished(MFMailComposeViewController controller, MFMailComposeResult result, NSError error)
            {
                switch (result)
                {
                case MFMailComposeResult.Failed:
                    MessageBox alert = new MessageBox();
                    alert.ShowAlert("Email Failed", error.Description, "Ok");
                    break;

                default:
                    break;
                }

                this.InvokeOnMainThread(delegate
                {
                    controller.DismissViewController(true, delegate
                    {
                        if (controller != null)
                        {
                            // Dispose of the view object.
                            controller.Dispose();
                            controller = null;
                        }
                    });
                });
            }
Ejemplo n.º 4
0
        public Task <MailResult> Send(string recipient, string subject, string message)
        {
            var tcs = new TaskCompletionSource <MailResult>();

            if (!MFMailComposeViewController.CanSendMail)
            {
                var mailResult = new MailResult(
                    false,
                    Resources.NoEmailErrorTitle,
                    Resources.NoEmailErrorMessage);
                return(Task.FromResult(mailResult));
            }

            var mailComposeViewController = new MFMailComposeViewController();

            mailComposeViewController.SetToRecipients(new[] { recipient });
            mailComposeViewController.SetSubject(subject);
            mailComposeViewController.SetMessageBody(message, false);

            mailComposeViewController.Finished += (sender, e) => {
                mailComposeViewController.DismissViewController(true, null);
                var mailResult = e.Result == MFMailComposeResult.Sent
                                  ? MailResult.Ok
                                  : new MailResult(false, null, null);
                tcs.SetResult(mailResult);
            };

            topViewControllerProvider.TopViewController.PresentViewController(mailComposeViewController, true, null);

            return(tcs.Task);
        }
Ejemplo n.º 5
0
        public void Show(string to = null, string subject = null, string body = null)
        {
            if (!MFMailComposeViewController.CanSendMail)
            {
                Alert.ShowErrorBox("Email is not setup correctly on this device");
                return;
            }

            var mail = new MFMailComposeViewController();

            mail.ModalPresentationStyle = UIModalPresentationStyle.FormSheet;
            mail.Finished += delegate {
                mail.DismissViewController(true, null);
            };

            if (!string.IsNullOrEmpty(to))
            {
                mail.SetToRecipients(new string[] { to });
            }

            if (!string.IsNullOrEmpty(subject))
            {
                mail.SetSubject(subject);
            }

            if (!string.IsNullOrEmpty(body))
            {
                mail.SetMessageBody(body, true);
            }

            _c.PresentViewController(mail, true, null);
        }
Ejemplo n.º 6
0
 void FreeFeedbackViewController()
 {
     if (feedbackMailViewController == null)
     {
         return;
     }
     feedbackMailViewController.DismissViewController(false, (NSAction) delegate {
         Free(ref feedbackMailViewController);
     });
 }
Ejemplo n.º 7
0
        static Task ComposeWithMailCompose(EmailMessage message)
        {
            // do this first so we can throw as early as possible
            var parentController = Platform.GetCurrentViewController();

            // create the controller
            var controller = new MFMailComposeViewController();

            if (!string.IsNullOrEmpty(message?.Body))
            {
                controller.SetMessageBody(message.Body, message.BodyFormat == EmailBodyFormat.Html);
            }
            if (!string.IsNullOrEmpty(message?.Subject))
            {
                controller.SetSubject(message.Subject);
            }
            if (message?.To?.Count > 0)
            {
                controller.SetToRecipients(message.To.ToArray());
            }
            if (message?.Cc?.Count > 0)
            {
                controller.SetCcRecipients(message.Cc.ToArray());
            }
            if (message?.Bcc?.Count > 0)
            {
                controller.SetBccRecipients(message.Bcc.ToArray());
            }

            if (message?.Attachments?.Count > 0)
            {
                foreach (var attachment in message.Attachments)
                {
                    var data = NSData.FromFile(attachment.FullPath);
                    if (data == null)
                    {
                        throw new FileNotFoundException($"Attachment {attachment.FileName} not found.", attachment.FullPath);
                    }

                    controller.AddAttachmentData(data, attachment.ContentType, attachment.FileName);
                }
            }

            // show the controller
            var tcs = new TaskCompletionSource <bool>();

            controller.Finished += (sender, e) =>
            {
                controller.DismissViewController(true, null);
                tcs.TrySetResult(e.Result == MFMailComposeResult.Sent);
            };
            parentController.PresentViewController(controller, true, null);

            return(tcs.Task);
        }
Ejemplo n.º 8
0
        private void reportIssue(string title, string message)
        {
            UIAlertController reportIssueController = UIAlertController.Create(title, message, UIAlertControllerStyle.Alert);

            UIAlertAction reportIssueAction = UIAlertAction.Create("Email Tech Support", UIAlertActionStyle.Default, (Action) => {
                MFMailComposeViewController mail = new MFMailComposeViewController();

                if (MFMailComposeViewController.CanSendMail == true)
                {
                    mail.SetToRecipients(new String[] { "*****@*****.**" });
                    this.PresentViewController(mail, true, null);
                }
                else
                {
                    if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad)
                    {
                        AI.AIEnglish("Mail Box is not enabled on your iPad", "en-US", 2.0f, 1.0f, 1.0f);
                    }
                    else if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Phone)
                    {
                        AI.AIEnglish("Mail Box is not enabled on your iPhone", "en-US", 2.0f, 1.0f, 1.0f);
                    }
                }

                mail.Finished += (sender, e) => {
                    mail.DismissViewController(true, null);
                };
            });

            UIAlertAction denied = UIAlertAction.Create("Never Mind", UIAlertActionStyle.Cancel, (Action) =>
            {
                reportIssueController.Dispose();
            });

            reportIssueController.AddAction(reportIssueAction);
            reportIssueController.AddAction(denied);

            if (this.PresentedViewController == null)
            {
                this.PresentViewController(reportIssueController, true, null);
            }
            else if (this.PresentedViewController != null)
            {
                this.PresentedViewController.DismissViewController(true, () =>
                {
                    reportIssueController.Dispose();
                    this.PresentViewController(reportIssueController, true, null);
                });
            }
        }
 partial void SendButtonClick(MonoTouch.Foundation.NSObject sender)
 {
     if (MFMailComposeViewController.CanSendMail)
     {
         var mail = new MFMailComposeViewController();
         mail.SetSubject("Zetetic Message Database");
         mail.SetToRecipients(new string[] {});
         mail.SetMessageBody("Please find a database attached", false);
         mail.AddAttachmentData(NSData.FromFile(_messageDb.FilePath), MessageDb.MIME_TYPE, Path.GetFileName(_messageDb.FilePath));
         mail.Finished += (s, e) => {
             mail.DismissViewController(true, null);
         };
         PresentViewController(mail, true, null);
     }
 }
Ejemplo n.º 10
0
        private void SendEmailConfirmationJobAccepted(string dbFileName)
        {
            string[] tst = dbFileName.Split(' ');

            long   customerNumber = 0;
            long   jobID          = 0;
            string emailSender    = "";

            try {
                customerNumber = Convert.ToInt64(tst[1]);
                jobID          = Convert.ToInt64(tst [2]);
                emailSender    = tst[4] + "@puratap.com";
            } catch {
            }
            Customer c = _jobs.Customers.Find(customer => customer.CustomerNumber == customerNumber);

            if (c != null)
            {
                var mail = new MFMailComposeViewController();

                Action act = delegate { };

                string msg = String.Format("Dear office,\r\n\r\n I hereby inform you that job {0} for customer {1} has been accepted.", jobID, c.CustomerNumber);

                mail.SetSubject(String.Format("RE: Job accepted -- CN# {0} {1} {2}, job ID {3}", c.CustomerNumber, c.FirstName, c.LastName, jobID));
                mail.SetToRecipients(new string[] { emailSender });
                mail.SetCcRecipients(new string[] { "*****@*****.**" });
                mail.SetMessageBody(msg, false);

                mail.Finished += delegate(object sender, MFComposeResultEventArgs e) {
                    if (e.Result == MFMailComposeResult.Sent)
                    {
                        var sendSuccess = new UIAlertView("", "Mail sent", null, "OK");
                        sendSuccess.Show();
                    }
                    else if (e.Result == MFMailComposeResult.Failed)
                    {
                        var sendFailed = new UIAlertView("Error", "Failed to send message: " + e.Error.Description, null, "OK");
                        sendFailed.Show();
                    }

                    mail.DismissViewController(true, act);
                };

                _tabs.PresentViewController(mail, true, act);
            }
        }
Ejemplo n.º 11
0
		public override async Task ExecuteAsync ()
		{
			await base.ExecuteAsync ();

			if (string.IsNullOrWhiteSpace (Address))
				return;

			var fromVC = UIApplication.SharedApplication.Windows [0].RootViewController;

			var c = new MFMailComposeViewController ();
			c.Finished += (sender, e) => c.DismissViewController (true, null);
			c.SetToRecipients (new [] { Address });
			c.SetSubject (Subject);
			c.SetMessageBody (BodyHtml, true);

			await fromVC.PresentViewControllerAsync (c, true);
		}
Ejemplo n.º 12
0
        public async Task LaunchMailto(CancellationToken ct, string subject = null, string body = null, string[] to = null, string[] cc = null, string[] bcc = null)
        {
#if !__MACCATALYST__  // catalyst https://github.com/xamarin/xamarin-macios/issues/13935
            if (!MFMailComposeViewController.CanSendMail)
            {
                return;
            }

            var mailController = new MFMailComposeViewController();

            mailController.SetToRecipients(to);
            mailController.SetSubject(subject);
            mailController.SetMessageBody(body, false);
            mailController.SetCcRecipients(cc);
            mailController.SetBccRecipients(bcc);

            var finished = new TaskCompletionSource <object>();
            var handler  = new EventHandler <MFComposeResultEventArgs>((snd, args) => finished.TrySetResult(args));

            try
            {
                mailController.Finished += handler;
                UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(mailController, true, null);

                using (ct.Register(() => finished.TrySetCanceled()))
                {
                    await finished.Task;
                }
            }
            finally
            {
                await CoreDispatcher
                .Main
                .RunAsync(CoreDispatcherPriority.High, () =>
                {
                    mailController.Finished -= handler;
                    mailController.DismissViewController(true, null);
                })
                .AsTask(CancellationToken.None);
            }
#endif
        }
Ejemplo n.º 13
0
        public override async Task ExecuteAsync()
        {
            await base.ExecuteAsync();

            if (string.IsNullOrWhiteSpace(Address))
            {
                return;
            }

            var fromVC = UIApplication.SharedApplication.Windows [0].RootViewController;

            var c = new MFMailComposeViewController();

            c.Finished += (sender, e) => c.DismissViewController(true, null);
            c.SetToRecipients(new [] { Address });
            c.SetSubject(Subject);
            c.SetMessageBody(BodyHtml, true);

            await fromVC.PresentViewControllerAsync(c, true);
        }
Ejemplo n.º 14
0
        static Task PlatformComposeAsync(EmailMessage message)
        {
            // do this first so we can throw as early as possible
            var parentController = Platform.GetCurrentViewController();

            // create the controller
            var controller = new MFMailComposeViewController();

            if (!string.IsNullOrEmpty(message?.Body))
            {
                controller.SetMessageBody(message.Body, message?.BodyFormat == EmailBodyFormat.Html);
            }
            if (!string.IsNullOrEmpty(message?.Subject))
            {
                controller.SetSubject(message.Subject);
            }
            if (message?.To.Count > 0)
            {
                controller.SetToRecipients(message.To.ToArray());
            }
            if (message?.Cc.Count > 0)
            {
                controller.SetCcRecipients(message.Cc.ToArray());
            }
            if (message?.Bcc.Count > 0)
            {
                controller.SetBccRecipients(message.Bcc.ToArray());
            }

            // show the controller
            var tcs = new TaskCompletionSource <bool>();

            controller.Finished += (sender, e) =>
            {
                controller.DismissViewController(true, null);
                tcs.SetResult(e.Result == MFMailComposeResult.Sent);
            };
            parentController.PresentViewController(controller, true, null);

            return(tcs.Task);
        }
Ejemplo n.º 15
0
        public void shareEmail()
        {
            if (MFMailComposeViewController.CanSendMail)
            {
                mailController = new MFMailComposeViewController();
                mailController.SetToRecipients(new string[] { "", "" });
                mailController.SetSubject("StressBuster!");
                mailController.SetMessageBody("Bust your stress with this new iOS Games!!", false);
                // do mail operations here


                mailController.Finished += (sender, e) => {
                    //					Console.WriteLine (args.Result.ToString ());
                    //					args.Controller.DismissViewController (true, null);
                    mailController.DismissViewController(true, null);

                    //PresentScene(mailController);
                    //this//.PresentViewController (mailController, true, null);
                };

                Console.WriteLine("EMAIL CONTROLLER");
                View.Window.RootViewController.PresentModalViewController(mailController, true);
            }
        }
Ejemplo n.º 16
0
 public override void DidFinish(MFMailComposeViewController viewController, MFMailComposeResult result, NSError error)
 {
     viewController.DismissViewController(true, null);
 }
Ejemplo n.º 17
0
 public override void DidFinish(MFMailComposeViewController viewController, MFMailComposeResult result, NSError error)
 {
     viewController.DismissViewController(true, null);
 }
		public void Finished (MFMailComposeViewController controller, MFMailComposeResult result, NSError error)
		{
			controller.DismissViewController(true, null);
		}
Ejemplo n.º 19
0
		partial void SendButtonClick(MonoTouch.Foundation.NSObject sender) 
		{
			if (MFMailComposeViewController.CanSendMail) 
			{
				var mail = new MFMailComposeViewController ();
				mail.SetSubject( "Zetetic Message Database");
				mail.SetToRecipients(new string[]{});
				mail.SetMessageBody ("Please find a database attached", false);
				mail.AddAttachmentData(NSData.FromFile(_messageDb.FilePath), MessageDb.MIME_TYPE, Path.GetFileName(_messageDb.FilePath));
				mail.Finished += (s, e) => {
					mail.DismissViewController(true, null);
				};
				PresentViewController(mail, true, null);			
			}
		}
 public override void DidFinish(MFMailComposeViewController controller, MFMailComposeResult result, NSError error)
 {
     controller.DismissViewController(true, null);
     SocialXT.OnMailCompleted(result, error);
 }
Ejemplo n.º 21
0
 //        void CreateSlideDownMenu ()
 //        {
 //            var item0 = new MenuItem ("Options", UIImage.FromBundle ("frames4832.png"), (menuItem) => {
 //                Console.WriteLine("Item: {0}", menuItem);
 //            });
 //            item0.Tag = 0;
 //            var email = MonoTouch.Foundation.NSBundle.MainBundle.LocalizedString("Email", "Email");
 //            var item1 = new MenuItem (email, UIImage.FromBundle ("startree.png"), (menuItem) => {
 //                Console.WriteLine("Item: {0}", menuItem);
 //                MakeEmail();
 //
 //            });
 //            item1.Tag = 1;
 //            var item2 = new MenuItem ("Dismiss", UIImage.FromBundle ("frames4832.png"), (menuItem) => {
 //                Console.WriteLine("Item: {0}", menuItem);
 //                outer.DismissViewController(false,null);
 //            });
 //            item2.Tag = 2;
 //
 //
 //            //item0.tag = 0;
 //
 //            var slideMenu = new SlideMenu (new List<MenuItem> { item0, item1, item2});
 //            slideMenu.Center = new PointF (slideMenu.Center.X, slideMenu.Center.Y + 25);
 //            this.View.AddSubview (slideMenu);
 //        }
 void MakeEmail()
 {
     mailContr = new MFMailComposeViewController ();
     mailContr.SetSubject (AppDelegate.bl.GenerateSubject (myLager));
     mailContr.SetMessageBody (AppDelegate.bl.GenerateManifest (myLager), false);
     ancestor.NavigationController.PresentViewController (mailContr, true, null);
     mailContr.Finished += (object sender2, MFComposeResultEventArgs e2) => mailContr.DismissViewController (true, delegate {
     });
 }
Ejemplo n.º 22
0
 public override void Finished(MFMailComposeViewController controller,
                               MFMailComposeResult result, NSError error)
 {
     controller.DismissViewController(true, DoCompletedAction);
 }
        private UIActionSheet SetUpActionSheet()
        {
            var actionSheet = new UIActionSheet ();

            actionSheet.AddButton ("Add to Calendar");
            actionSheet.AddButton ("Send Email");
            actionSheet.AddButton ("Share to Twitter");
            actionSheet.AddButton ("Share to Facebook");

            actionSheet.AddButton ("Cancel");

            actionSheet.CancelButtonIndex = 4;

            actionSheet.Clicked += delegate(object sender, UIButtonEventArgs e) {
                if (e.ButtonIndex == 0) {
                    EventSingleton.Current.EventStore.RequestAccess (
                        EKEntityType.Event, (granted, exception) => InvokeOnMainThread (() => {
                        if (granted) {
                            var calendarView = new AddToCalendar (this);
                            NavigationController.SetNavigationBarHidden (true, true);
                            string description =
                                eventContentWebView.EvaluateJavascript (@"document.documentElement.innerText");
                            _thisEvent.Description = description;
                            calendarView.PresentView (_thisEvent);
                            PresentViewController (calendarView, true, null);
                        } else
                            new UIAlertView ("Access Denied", "User Denied Access to Calendars/Reminders", null, "ok",
                                null).Show ();
                    }));
                }

                if (e.ButtonIndex == 1) {
                    if (MFMailComposeViewController.CanSendMail) {
                        var mailController = new MFMailComposeViewController ();

                        mailController.SetSubject (_thisEvent.Title);
                        mailController.SetMessageBody (_thisEvent.Description, true);
                        mailController.Finished += (object s, MFComposeResultEventArgs args) => {
                            if (args.Result == MFMailComposeResult.Failed)
                                BTProgressHUD.ShowErrorWithStatus ("Sorry can't send the email right now.");
                            else
                                mailController.DismissViewController (true, null);
                        };
                        PresentViewController (mailController, true, null);
                    } else {
                        BTProgressHUD.ShowErrorWithStatus ("Email function is not supported.");
                    }
                }
                string eventFacebook = "Event: " + _thisEvent.Title + "." + "\n" + "Location: " + _thisEvent.Place + "." +
                                                   "\n" + "Time: " + EventTimeSpan ();
                string eventTweet = TweetEventTitle () + "Location: " + _thisEvent.Place + ". " + EventTimeSpan ();

                if (e.ButtonIndex == 2) {
                    SLComposeViewController twitterFeed = SLComposeViewController.FromService (SLServiceType.Twitter);
                    twitterFeed.SetInitialText (eventTweet);
                    if (_thisEvent.RegistrationUrl != null)
                        twitterFeed.AddUrl (new NSUrl (_thisEvent.RegistrationUrl ?? ""));
                    PresentViewController (twitterFeed, true, null);
                }

                if (e.ButtonIndex == 3) {
                    SLComposeViewController facebookFeed = SLComposeViewController.FromService (SLServiceType.Facebook);
                    facebookFeed.SetInitialText (eventFacebook);
                    if (_thisEvent.RegistrationUrl != null)
                        facebookFeed.AddUrl (new NSUrl (_thisEvent.RegistrationUrl));
                    PresentViewController (facebookFeed, true, null);
                }
            };
            return actionSheet;
        }
 public override void DidFinish(MFMailComposeViewController controller, MFMailComposeResult result, NSError error)
 {
     controller.DismissViewController(true, null);
     SocialXT.OnMailCompleted(result, error);
 }
Ejemplo n.º 25
0
        private void CreateEmailBarButton()
        {
            //DO NOT DELETE
            UIBarButtonItem it = new UIBarButtonItem ();
            mailContr = new MFMailComposeViewController();
            mailContr.SetSubject(AppDelegate.bl.GenerateContainerSubject(this.boks));
            mailContr.SetMessageBody(AppDelegate.bl.GenerateContainerManifest(this.boks),false);
            AppDelegate.key.AddQRPictureAttachment(mailContr, this.boks);
            //			bl.AddPictureAttachment(mailContr, this.boks);
            it.Title = "email";
            //IS really info
            it.Clicked += (object sender, EventArgs e) => this.PresentViewController (mailContr, true, delegate {});
            mailContr.Finished += (object sender, MFComposeResultEventArgs e) => mailContr.DismissViewController (true, delegate{});

            this.NavigationItem.SetRightBarButtonItem (it, true);
        }