protected void Page_Load(object sender, EventArgs e) { string fb_sig_time = Request.Form["fb_sig_time"]; long fb_sig_user = long.Parse(Request.Form["fb_sig_user"]); string fb_sig_api_key = Request.Form["fb_sig_api_key"]; string fb_sig_linked_account_ids = Request.Form["fb_sig_linked_account_ids"]; string fb_sig = Request.Form["fb_sig"]; if (Request.QueryString["type"] == "authorize") { int fb_sig_authorize = int.Parse(Request.Form["fb_sig_authorize"]); string fb_sig_profile_update_time = Request.Form["fb_sig_profile_update_time"]; string fb_sig_session_key = Request.Form["fb_sig_session_key"]; string fb_sig_expires = Request.Form["fb_sig_expires"]; } else if (Request.QueryString["type"] == "remove") { int fb_sig_uninstall = int.Parse(Request.Form["fb_sig_uninstall"]); string fb_sig_app_id = Request.Form["fb_sig_app_id"]; int fb_sig_added = int.Parse(Request.Form["fb_sig_added"]); Query q2 = new Query(); q2.QueryCondition = new Q(Bobs.MixmagSubscription.Columns.FacebookUID, fb_sig_user); MixmagSubscriptionSet mss = new MixmagSubscriptionSet(q2); if (mss.Count > 0) { Bobs.MixmagSubscription subscriber = mss[0]; subscriber.FacebookPermissionEmail = false; subscriber.FacebookPermissionPublish = false; subscriber.SendMixmag = false; subscriber.PublishStoryOnRead = false; subscriber.Update(); } } }
public static string SaveDetailsGeneric(string uid, string sessionKey, string secret, string expires, string baseDomain, string type, bool sendMixmag, bool publishStoryOnRead, bool saveEmail, bool savePublish, bool revertEmailToFacebook) { FacebookHttpContext.Init(HttpContext.Current, uid, sessionKey, secret, expires, baseDomain); //bool sendMixmagFinal, publishStoryOnReadFinal; long usr; bool emailPermission; bool publishPermission; string emailFromFacebook = ""; //bool isAddressComplete = false; //bool isEmailComplete = false; //bool isEmailVerified = false; //bool isEmailBroken = false; //string email = ""; using (var batch = Batch.Start(FacebookHttpContext.Current)) { var usrR = FacebookHttpContext.Current.Users.GetLoggedInUser(); var emailPermissionR = FacebookHttpContext.Current.Users.HasAppPermission("email"); var publishPermissionR = FacebookHttpContext.Current.Users.HasAppPermission("publish_stream"); batch.Complete(); usr = usrR.Value; emailPermission = emailPermissionR.Value; publishPermission = publishPermissionR.Value; if (emailPermission) { //get email from Facebook query... emailFromFacebook = FacebookHttpContext.Current.Fql.Query<User>("SELECT email FROM user WHERE uid=" + usr.ToString()).Value.Email; } } Query q = new Query(); q.QueryCondition = new Q(Bobs.MixmagSubscription.Columns.FacebookUID, usr); MixmagSubscriptionSet mss = new MixmagSubscriptionSet(q); if (mss.Count > 0) { mss[0].FacebookPermissionEmail = emailPermission; mss[0].FacebookPermissionPublish = publishPermission; if (type == "SaveDetails") { mss[0].SendMixmag = sendMixmag; mss[0].PublishStoryOnRead = publishStoryOnRead; if ((mss[0].Email == null || mss[0].Email.Length == 0 || revertEmailToFacebook) && emailFromFacebook.Length > 0) updateEmailFromFacebook(mss[0], emailFromFacebook); } else if (type == "SaveDetailsFromPermissions") { if (saveEmail) { mss[0].SendMixmag = emailPermission; if (emailPermission && (mss[0].Email == null || mss[0].Email.Length == 0 || revertEmailToFacebook) && emailFromFacebook.Length > 0) updateEmailFromFacebook(mss[0], emailFromFacebook); } if (savePublish) mss[0].PublishStoryOnRead = publishPermission; } //sendMixmagFinal = mss[0].FacebookPermissionEmail.Value && mss[0].SendMixmag.Value; //publishStoryOnReadFinal = mss[0].FacebookPermissionPublish.Value && mss[0].PublishStoryOnRead.Value; //isAddressComplete = mss[0].IsAddressComplete.HasValue && mss[0].IsAddressComplete.Value; //isEmailComplete = mss[0].IsEmailComplete.HasValue && mss[0].IsEmailComplete.Value; //isEmailVerified = mss[0].IsEmailVerified.HasValue && mss[0].IsEmailVerified.Value; //isEmailBroken = mss[0].IsEmailBroken.HasValue && mss[0].IsEmailBroken.Value; //email = mss[0].Email; mss[0].Update(); return returnString(mss[0], mss[0].FacebookPermissionEmail.Value, mss[0].FacebookPermissionPublish.Value); } else { Bobs.MixmagSubscription ms = new Bobs.MixmagSubscription(); ms.FacebookUID = usr; ms.FacebookPermissionEmail = emailPermission; ms.FacebookPermissionPublish = publishPermission; ms.DateTimeCreated = DateTime.Now; if (type == "SaveDetails") { ms.SendMixmag = sendMixmag; ms.PublishStoryOnRead = publishStoryOnRead; if (emailFromFacebook.Length > 0) updateEmailFromFacebook(ms, emailFromFacebook); } else if (type == "SaveDetailsFromPermissions") { if (saveEmail) { ms.SendMixmag = emailPermission; if (emailPermission && emailFromFacebook.Length > 0) updateEmailFromFacebook(ms, emailFromFacebook); } if (savePublish) ms.PublishStoryOnRead = publishPermission; } ms.TotalSent = 0; ms.TotalRead = 0; //sendMixmagFinal = ms.FacebookPermissionEmail.Value && ms.SendMixmag.Value; //publishStoryOnReadFinal = ms.FacebookPermissionPublish.Value && ms.PublishStoryOnRead.Value; //isAddressComplete = ms.IsAddressComplete.HasValue && ms.IsAddressComplete.Value; //isEmailComplete = ms.IsEmailComplete.HasValue && ms.IsEmailComplete.Value; //isEmailVerified = ms.IsEmailVerified.HasValue && ms.IsEmailVerified.Value; //isEmailBroken = ms.IsEmailBroken.HasValue && ms.IsEmailBroken.Value; //email = ms.Email; ms.Update(); return returnString(ms, ms.FacebookPermissionEmail.Value, ms.FacebookPermissionPublish.Value); } //return (sendMixmagFinal ? "1" : "0") + // (publishStoryOnReadFinal ? "1" : "0") + // (isAddressComplete ? "1" : "0") + // (isEmailComplete ? "1" : "0") + // (isEmailVerified ? "1" : "0") + // (isEmailBroken ? "1" : "0") + // email; //return string.Format("{3}: {0}, {1}, {2}", // usr.ToString(), // (sendMixmag && emailPermission).ToString(), // (publishStoryOnRead && publishPermission).ToString(), // type //); //return ""; //FacebookHttpContext.Current.Notifications.SendEmail(new string[] { uid }, "Test subject", "Test text", ""); }
public static string QueryDetails(string uid, string sessionKey, string secret, string expires, string baseDomain) { //throw new Exception("uid: " + uid + ", sessionKey: " + sessionKey); FacebookHttpContext.Init(HttpContext.Current, uid, sessionKey, secret, expires, baseDomain); long usr; bool emailPermission; bool publishPermission; using (var batch = Batch.Start(FacebookHttpContext.Current)) { var usrR = FacebookHttpContext.Current.Users.GetLoggedInUser(); var emailPermissionR = FacebookHttpContext.Current.Users.HasAppPermission("email"); var publishPermissionR = FacebookHttpContext.Current.Users.HasAppPermission("publish_stream"); batch.Complete(); usr = usrR.Value; emailPermission = emailPermissionR.Value; publishPermission = publishPermissionR.Value; } Query q = new Query(); q.QueryCondition = new Q(Bobs.MixmagSubscription.Columns.FacebookUID, usr); MixmagSubscriptionSet mss = new MixmagSubscriptionSet(q); if (mss.Count == 0) { return "XXX"; } else { return returnString(mss[0], emailPermission, publishPermission); } }
public static string SendLink(string uid, string sessionKey, string secret, string expires, string baseDomain, string requestCode) { FacebookHttpContext.Init(HttpContext.Current, uid, sessionKey, secret, expires, baseDomain); long usr; bool emailPermission; bool publishPermission; using (var batch = Batch.Start(FacebookHttpContext.Current)) { var usrR = FacebookHttpContext.Current.Users.GetLoggedInUser(); var emailPermissionR = FacebookHttpContext.Current.Users.HasAppPermission("email"); var publishPermissionR = FacebookHttpContext.Current.Users.HasAppPermission("publish_stream"); batch.Complete(); usr = usrR.Value; emailPermission = emailPermissionR.Value; publishPermission = publishPermissionR.Value; } Query q = new Query(); q.QueryCondition = new Q(Bobs.MixmagSubscription.Columns.FacebookUID, usr); MixmagSubscriptionSet mss = new MixmagSubscriptionSet(q); if (mss.Count == 0) { return "XXX"; } else { Bobs.MixmagSubscription s = mss[0]; if (!(s.IsEmailComplete.HasValue && s.IsEmailComplete.Value)) throw new Exception("Email has not been entered."); if (s.IsEmailVerified.HasValue && s.IsEmailVerified.Value && !(s.IsEmailBroken.HasValue && s.IsEmailBroken.Value)) throw new Exception("Email has already been verified."); if (s.IsEmailFromFacebook.HasValue && s.IsEmailFromFacebook.Value && !(s.IsEmailBroken.HasValue && s.IsEmailBroken.Value)) throw new Exception("Email is from Facebook - this doesn't need verifying."); if (s.IsEmailBroken.HasValue && s.IsEmailBroken.Value) { s.IsEmailBroken = false; s.EmailBrokenDateTime = null; if (s.IsEmailVerified.HasValue && s.IsEmailVerified.Value) { s.EmailVerificationSecret = Cambro.Misc.Utility.GenRandomChars(5).ToLower(); s.IsEmailVerified = false; } s.Update(); } SendVerificationEmail(s, requestCode); return returnString(s, emailPermission, publishPermission); } }
public static string SaveEmail(string uid, string sessionKey, string secret, string expires, string baseDomain, string requestCode, string email) { FacebookHttpContext.Init(HttpContext.Current, uid, sessionKey, secret, expires, baseDomain); long usr; bool emailPermission; bool publishPermission; using (var batch = Batch.Start(FacebookHttpContext.Current)) { var usrR = FacebookHttpContext.Current.Users.GetLoggedInUser(); var emailPermissionR = FacebookHttpContext.Current.Users.HasAppPermission("email"); var publishPermissionR = FacebookHttpContext.Current.Users.HasAppPermission("publish_stream"); batch.Complete(); usr = usrR.Value; emailPermission = emailPermissionR.Value; publishPermission = publishPermissionR.Value; } Query q = new Query(); q.QueryCondition = new Q(Bobs.MixmagSubscription.Columns.FacebookUID, usr); MixmagSubscriptionSet mss = new MixmagSubscriptionSet(q); if (mss.Count == 0) { return "XXX"; } else { Bobs.MixmagSubscription s = mss[0]; email = email.ToLower(); if (email.Length > 0 && !email.EndsWith("@proxymail.facebook.com")) { if (IsEmail(email)) { if (s.Email != email) { s.EmailVerificationSecret = Cambro.Misc.Utility.GenRandomChars(5).ToLower(); s.Email = email; s.IsEmailBroken = false; s.EmailBrokenDateTime = null; s.IsEmailComplete = true; s.IsEmailVerified = false; s.IsEmailFromFacebook = false; SendVerificationEmail(s, requestCode); } } else { throw new Exception("Bad email address!"); } } s.Update(); return returnString(s, emailPermission, publishPermission); } }
protected void Page_Load(object sender, EventArgs e) { Query qAll = new Query(); qAll.Columns = new ColumnSet(Country.Columns.FriendlyName, Country.Columns.K); qAll.OrderBy = new OrderBy(Country.Columns.FriendlyName); qAll.QueryCondition = new Q(Country.Columns.Enabled, true); CountrySet csAll = new CountrySet(qAll); CountryDropDownList.DataSource = csAll; CountryDropDownList.DataTextField = "FriendlyName"; CountryDropDownList.DataValueField = "K"; CountryDropDownList.DataBind(); CountryDropDownList.SelectedValue = IpCountry.ClientCountryK().ToString(); if (Request.QueryString["k"] != null && Request.QueryString["code"] != null) { Bobs.MixmagSubscription ms = new Bobs.MixmagSubscription(int.Parse(Request.QueryString["k"])); if (ms.EmailVerificationSecret.ToLower() == Request.QueryString["code"].ToLower()) { ms.IsEmailVerified = true; ms.Update(); } } if (Request.QueryString["k"] != null && Request.QueryString["email"] != null) { Bobs.MixmagSubscription ms = new Bobs.MixmagSubscription(int.Parse(Request.QueryString["k"])); if (ms.Email.ToLower() == Request.QueryString["email"].ToLower()) { Query q = new Query(); q.QueryCondition = new Q(Bobs.MixmagSubscription.Columns.Email, ms.Email); MixmagSubscriptionSet mss = new MixmagSubscriptionSet(q); foreach (Bobs.MixmagSubscription ms1 in mss) { ms1.SendMixmag = false; ms1.Update(); } } } if (Request.QueryString["k"] != null && Request.QueryString["uid"] != null) { Bobs.MixmagSubscription ms = new Bobs.MixmagSubscription(int.Parse(Request.QueryString["k"])); if (ms.FacebookUID == int.Parse(Request.QueryString["uid"])) { ms.SendMixmag = false; ms.Update(); } } if (IssueDate.HasValue) { string code = IssueDate.Value.Year.ToString("0000"); code += IssueDate.Value.Month.ToString("00"); code += CoverId.HasValue ? CoverId.Value.ToString("0") : "0"; if (PageNumber.HasValue && PageNumber.Value > 0) { code += PageNumber.Value.ToString(); } RequestCode.Value = code; } int selectedIssue = 0; DateTime? selectedIssueDate = null; if (IssueDate.HasValue) { DateTime month = IssueDate.Value; Query q = new Query(); if (CoverId.HasValue) { q.QueryCondition = new And( new Q(MixmagIssue.Columns.IssueCoverDate, month), new Q(MixmagIssue.Columns.IssueCoverId, CoverId.Value) ); } else { q.QueryCondition = new Q(MixmagIssue.Columns.IssueCoverDate, month); } q.OrderBy = new OrderBy(MixmagIssue.Columns.IssueCoverId); MixmagIssueSet mis = new MixmagIssueSet(q); if (mis.Count > 0) { MixmagIssue issue = mis[0]; LoginButtonIntroTextP.InnerText = "You must connect with Facebook to read Mixmag:"; FacebookHttpContext context = null; try { context = FacebookHttpContext.Current; } catch { } if (context != null) { var usrR = FacebookHttpContext.Current.Users.GetLoggedInUser(); if (usrR != null && usrR.Value > 0) { Query q2 = new Query(); q2.QueryCondition = new Q(Bobs.MixmagSubscription.Columns.FacebookUID, usrR.Value); MixmagSubscriptionSet mss = new MixmagSubscriptionSet(q2); if (mss.Count > 0) { Bobs.MixmagSubscription subscriber = mss[0]; MixmagRead mr = null; try { mr = new MixmagRead(subscriber.K, issue.K); } catch (BobNotFound) { mr = new MixmagRead(); mr.MixmagSubscriberK = subscriber.K; mr.MixmagIssueK = issue.K; mr.DateTimeRead = DateTime.Now; } if (subscriber.PublishStoryOnRead.HasValue && subscriber.PublishStoryOnRead.Value) { //Have we sent a message to this subscribers facebook wall on the last 12 hours? If so, don't send this one. Query q3 = new Query(); q3.QueryCondition = new And( new Q(MixmagRead.Columns.MixmagSubscriberK, subscriber.K), new Q(MixmagRead.Columns.DateTimeLastStoryPublished, QueryOperator.GreaterThan, DateTime.Now.AddHours(-48)), new Q(MixmagRead.Columns.StoryPublished, true) ); MixmagReadSet mrs = new MixmagReadSet(q3); if (mrs.Count == 0) { //send to wall... bool found = false; if (PageNumber.HasValue) { foreach (MixmagIssue.ContentsItem item in issue.Contents) { if (item.PageNumber == PageNumber.Value) { FacebookHttpContext.Current.Status.Set(item.StatusMessage + " - " + issue.Url(true, PageNumber)); found = true; } } } if (!found) FacebookHttpContext.Current.Status.Set(issue.Contents[0].StatusMessage + " - " + issue.Url(true, null)); mr.StoryPublished = true; mr.DateTimeLastStoryPublished = DateTime.Now; } } if (mr.TotalReads.HasValue) mr.TotalReads++; else mr.TotalReads = 1; mr.DateTimeLastRead = DateTime.Now; mr.Update(); if (issue.TotalRead.HasValue) issue.TotalRead++; else issue.TotalRead = 1; issue.Update(); //Response.Redirect(issue.CerosUrl); Response.Write(@"<FRAMESET cols=""100%""><FRAMESET rows=""100%""><FRAME src=""" + issue.CerosUrl + (PageNumber.HasValue ? ("/page/" + PageNumber.ToString()) : "") + @"""></FRAMESET></FRAMESET>"); Response.End(); } } } SelectedIssueHolder.Visible = true; SelectedIssuePh.Controls.Clear(); SelectedIssuePh.Controls.Add(new LiteralControl(issue.GetHtml(PageNumber, false))); selectedIssue = issue.K; } } if (selectedIssue == 0) { //Get latest issue Query q1 = new Query(); q1.QueryCondition = new And( new Q(MixmagIssue.Columns.DateTimeSend, QueryOperator.LessThan, DateTime.Now), new Q(MixmagIssue.Columns.Ready, true)); q1.OrderBy = new OrderBy(MixmagIssue.Columns.IssueCoverDate, OrderBy.OrderDirection.Descending); q1.TopRecords = 1; MixmagIssueSet latestDateTimeSet = new MixmagIssueSet(q1); if (latestDateTimeSet.Count > 0) { selectedIssueDate = latestDateTimeSet[0].IssueCoverDate; Query q2 = new Query(); q2.QueryCondition = new And( new Q(MixmagIssue.Columns.DateTimeSend, QueryOperator.LessThan, DateTime.Now), new Q(MixmagIssue.Columns.Ready, true), new Q(MixmagIssue.Columns.IssueCoverDate, latestDateTimeSet[0].IssueCoverDate.Value)); q2.OrderBy = new OrderBy(MixmagIssue.Columns.IssueCoverId); MixmagIssueSet latestIssueSet = new MixmagIssueSet(q2); if (latestIssueSet.Count > 0) { SelectedIssueHeader.InnerHtml = "Current issue" + (latestIssueSet.Count > 1 ? "s" : ""); SelectedIssuePh.Controls.Clear(); foreach (MixmagIssue issue in latestIssueSet) SelectedIssuePh.Controls.Add(new LiteralControl(issue.GetHtml(null, false))); SelectedIssueHolder.Visible = true; } } } { Query q = new Query(); q.QueryCondition = new And( new Q(MixmagIssue.Columns.DateTimeSend, QueryOperator.LessThan, DateTime.Now), new Q(MixmagIssue.Columns.Ready, true), selectedIssue > 0 ? new Q(MixmagIssue.Columns.K, QueryOperator.NotEqualTo, selectedIssue) : new Q(true), selectedIssueDate.HasValue ? new Q(MixmagIssue.Columns.IssueCoverDate, QueryOperator.NotEqualTo, selectedIssueDate) : new Q(true)); q.OrderBy = new OrderBy( new OrderBy(MixmagIssue.Columns.IssueCoverDate, OrderBy.OrderDirection.Descending), new OrderBy(MixmagIssue.Columns.IssueCoverId)); q.TopRecords = 24; MixmagIssueSet backIssues = new MixmagIssueSet(q); if (backIssues.Count > 0) { StringBuilder sb = new StringBuilder(); foreach (MixmagIssue mi in backIssues) { sb.Append(mi.GetHtml(null, false)); } BackIssuesPh.Controls.Clear(); BackIssuesPh.Controls.Add(new LiteralControl(sb.ToString())); BackIssuesHolder.Visible = true; } } }
public static void SendMixmagOnlineEmail(string[] args) { DateTime issueDate = new DateTime(2011, 7, 1); int? coverId = null; Console.WriteLine("============"); Console.WriteLine("SendMixmagOnlineEmail {0}, coverId={1}", issueDate.ToString("MMM").ToUpper(), coverId.HasValue ? coverId.Value.ToString() : "none"); Console.WriteLine("============"); if (args.Length == 0) { Console.WriteLine("Press any key..."); Console.ReadLine(); } MixmagIssue currentIssue = MixmagIssue.GetIssueFromDate(issueDate, coverId); if (currentIssue == null) throw new Exception("No issue for this date"); if (!(currentIssue.Ready.HasValue && currentIssue.Ready.Value)) throw new Exception("This issue is not ready yet!"); Query qBackIssues = new Query(); qBackIssues.OrderBy = new OrderBy(MixmagIssue.Columns.IssueCoverDate, OrderBy.OrderDirection.Descending); qBackIssues.QueryCondition = new And( new Q(MixmagIssue.Columns.K, QueryOperator.NotEqualTo, currentIssue.K), new Q(MixmagIssue.Columns.Ready, true)); qBackIssues.TopRecords = 3; MixmagIssueSet backIssues = new MixmagIssueSet(qBackIssues); StringBuilder sb = new StringBuilder(); //sb.Append("<p>This is a paragraph of HTML that we can edit for each issue.</p>"); sb.Append("<h1>Latest Mixmag issue:</h1>"); sb.Append(currentIssue.GetHtml(null, true)); sb.Append("<div style=\"height:1px width:1px; clear: both; color:#ffffff;\">.</div>"); if (backIssues.Count > 0) { sb.Append("<h1>Recent Mixmag issues:</h1>"); foreach (MixmagIssue backIssue in backIssues) sb.Append(backIssue.GetHtml(null, true)); sb.Append("<div style=\"height:1px width:1px; clear: both; color:#ffffff;\">.</div>"); } string html = sb.ToString(); Console.WriteLine("Selecting...", 1); Query q = new Query(); q.QueryCondition = new And( new Q(MixmagSubscription.Columns.FacebookPermissionEmail, true), new Q(MixmagSubscription.Columns.SendMixmag, true), Vars.DevEnv ? new Q(MixmagSubscription.Columns.FacebookUID, 513584417) : new Q(true) ); MixmagSubscriptionSet bs = new MixmagSubscriptionSet(q); Console.WriteLine("Found " + bs.Count.ToString("#,##0") + " item(s)...", 1); List<string> emails = new List<string>(); System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(); client.Host = Common.Properties.GetDefaultSmtpServer(); for (int count = 0; count < bs.Count; count++) { MixmagSubscription c = bs[count]; try { try { Console.Write("incrementing counter for uid={0}...", c.FacebookUID.ToString()); Facebook.FacebookResponse<string> response = Facebook.Desktop.FacebookDesktopContext.Current(Facebook.Apps.MixmagOnline).Dashboard.IncrementCount(c.FacebookUID.ToString()); Console.WriteLine("done! response={0}.", response.Value); } catch(Exception ex) { Console.WriteLine("exception: {0}", ex.ToString()); } string subject = "Mixmag " + currentIssue.IssueCoverDate.Value.ToString("MMMM yyyy") + " - " + currentIssue.Contents[0].Tagline; if (c.IsEmailComplete.HasValue && c.IsEmailComplete.Value && c.IsEmailVerified.HasValue && c.IsEmailVerified.Value && !(c.IsEmailBroken.HasValue && c.IsEmailBroken.Value) && !emails.Contains(c.Email)) { //send email System.Net.Mail.MailMessage m = new System.Net.Mail.MailMessage(); m.Subject = subject; m.Body = html + "<p>To unsubscribe click here: <a href=\"http://www.mixmag-online.com/?k=" + c.K + "&email=" + c.Email + "\">http://www.mixmag-online.com/?k=" + c.K + "&email=" + c.Email + "</a></p>"; m.From = new System.Net.Mail.MailAddress("*****@*****.**", "Mixmag"); m.ReplyTo = new System.Net.Mail.MailAddress("*****@*****.**", "Mixmag"); if (Vars.DevEnv) m.To.Add("*****@*****.**"); else m.To.Add(c.Email); m.IsBodyHtml = true; Console.WriteLine("Sending email to " + c.Email); client.Send(m); emails.Add(c.Email); } else { //send email via facebook Facebook.Desktop.FacebookDesktopContext.Current(Facebook.Apps.MixmagOnline).Notifications.SendEmail( new string[] { c.FacebookUID.ToString() }, subject, "", html + "<p>To unsubscribe click here: <a href=\"http://www.mixmag-online.com/?k=" + c.K + "&uid=" + c.FacebookUID.ToString() + "\">http://www.mixmag-online.com/?k=" + c.K + "&uid=" + c.FacebookUID.ToString() + "</a></p>"); //Dashboard.incrementCount Console.WriteLine("Sending via facebook to " + c.FacebookUID); } // Do work here! c.TotalSent++; c.Update(); currentIssue.TotalSent++; currentIssue.Update(); if (count % 10 == 0) Console.WriteLine("Done " + count + "/" + bs.Count, 2); } catch (Exception ex) { Console.WriteLine("Exception " + count + "/" + bs.Count + " - " + ex.ToString(), 3); } bs.Kill(count); } Console.WriteLine("All done!"); Console.ReadLine(); }