Exemplo n.º 1
0
        public async Task <bool> SendInvite(string email, Guid userId)
        {
            var referral = await StoriesDbContext.Referrals.AddAsync(new Referral()
            {
                Code           = Guid.NewGuid(),
                Email          = email,
                ReferrerUserId = userId,
                ExpiryDate     = DateTime.UtcNow.AddDays(7)
            });

            var rowCount = await StoriesDbContext.SaveChangesAsync();

            if (rowCount != 1)
            {
                return(false);
            }

            var mailModel = new MailgunMailModel
            {
                To = new List <string> {
                    email
                },
                Subject = "Invitation to join the .Net Signals community",
                Text    = $"You have been invited to join the .Net Signals community.\n\n If you wish to join, go to https://dotnetsignals.com/user/referral/{referral.Entity.Code.ToString()}\n\n .Net Signals Team",
                Html    = $"You have been invited to join the .Net Signals community.<br/><br/> "
                          + $"If you wish to join, click here: <a href=\"https://dotnetsignals.com/user/referral/{referral.Entity.Code.ToString()}\">https://dotnetsignals.com/user/referral/{referral.Entity.Code.ToString()}</a>"
                          + "<br/><br/> .Net Signals Team",
            };

            var response = await MailService.Send(mailModel);

            return(response.StatusCode == System.Net.HttpStatusCode.OK);
        }
Exemplo n.º 2
0
        public async Task <IRestResponse> Send(MailgunMailModel model)
        {
            var client = new RestClient();

            client.BaseUrl       = new Uri(Options.Url);
            client.Authenticator = new HttpBasicAuthenticator("api", Options.APiPrivateKey);

            RestRequest request = new RestRequest();

            request.AddParameter("domain", "mg.dotnetsignals.com", ParameterType.UrlSegment);
            request.Resource = "{domain}/messages";

            request.AddParameter("from", string.IsNullOrEmpty(model.From) ? "noreply <*****@*****.**>" : model.From);

            foreach (var to in model.To)
            {
                request.AddParameter("to", to);
            }

            request.AddParameter("subject", model.Subject);

            foreach (var cc in model.CC)
            {
                request.AddParameter("cc", cc);
            }

            foreach (var bcc in model.BCC)
            {
                request.AddParameter("bcc", bcc);
            }

            foreach (var tag in model.Tags)
            {
                request.AddParameter("o:tag", tag);
            }

            if (!string.IsNullOrEmpty(model.Text))
            {
                request.AddParameter("text", model.Text);
            }

            if (!string.IsNullOrEmpty(model.Html))
            {
                request.AddParameter("html", model.Html);
            }

            if (Options.TestMode)
            {
                request.AddParameter("o:testmode", "yes");
            }

            if (model.RequireTLS)
            {
                request.AddParameter("o:require-tls", "True");
            }

            if (!string.IsNullOrEmpty(model.Campaign))
            {
                request.AddParameter("o:campaign", model.Campaign);
            }

            request.Method = Method.POST;

            var taskCompleteSource = new TaskCompletionSource <IRestResponse>();

            var restResponse = client.ExecuteAsync(request, response => {
                taskCompleteSource.SetResult(response);
            });

            return(await taskCompleteSource.Task);
        }