コード例 #1
0
ファイル: EmailSender.cs プロジェクト: mh453Uol/Tappr
        public async Task SendEmailAsync(string email, string subject, string message, string templateFile, object templateData)
        {
            var sender = new SendGridSender(Options.ApiKey);

            Email.DefaultSender   = sender;
            Email.DefaultRenderer = new RazorRenderer();


            var emailSending = Email
                               .From(Options.From)
                               .To(email)
                               .Subject(subject)
                               .Body(message);

            if (!String.IsNullOrEmpty(templateFile))
            {
                var assembly = this.GetType().GetTypeInfo().Assembly;
                var targets  = assembly.GetManifestResourceNames();

                var templatefile = targets.First(file => file.Contains(templateFile));

                emailSending.UsingTemplateFromEmbedded(templatefile, templateData, this.GetType().GetTypeInfo().Assembly);
            }

            await emailSending.SendAsync();
        }
コード例 #2
0
ファイル: Mailer.cs プロジェクト: mindfocus/nextcloud_net
        /**
         * SwiftMailer does currently not work with IDN domains, this function therefore converts the domains
         *
         * FIXME: Remove this once SwiftMailer supports IDN
         *
         * @param string email
         * @return string Converted mail address if `idn_to_ascii` exists
         */
//	protected string convertEmail(string email) {
//		if (!function_exists('idn_to_ascii') || !defined('INTL_IDNA_VARIANT_UTS46') || strpos(email, '@') === false) {
//			return email;
//		}
//
//		list(name, domain) = explode('@', email, 2);
//		domain = idn_to_ascii(domain, 0,INTL_IDNA_VARIANT_UTS46);
//		return name.'@'.domain;
//	}

        protected ISender getInstance()
        {
            if (this.instance != null)
            {
                return(this.instance);
            }

            object sender = null;

            switch (this.config.getSystemValue("mail_smtpmode", "smtp"))
            {
            case "sendgrid":
                sender = new SendGridSender("", true);
                break;

            case "mailgun":
                sender = new MailgunSender("", "");
                break;

            case "smtp":
            default:
                sender = this.getSmtpInstance();
                break;
            }

            return((ISender)sender);
        }
コード例 #3
0
ファイル: Startup.cs プロジェクト: benkham/WebMail
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            services.AddCors();

            services.AddSingleton <IConfiguration>(Configuration);

            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Info
                {
                    Title   = "WebMail HTTP API",
                    Version = "v1"
                });
            });

            // Inject webmail dependencies
            services.AddTransient <IEmail, Email>(sp =>
                                                  new Email(Configuration));

            services.AddTransient <ISender, FailoverSenderProxy>(sp =>
            {
                ISender sendGridSender = new SendGridSender(Configuration);
                ISender mailGunSender  = new MailGunSender(Configuration);

                // Register email senders for failover. Failover follows registration order.
                return(new FailoverSenderProxy()
                       .RegisterSender(sendGridSender)
                       .RegisterSender(mailGunSender));
            });
        }
コード例 #4
0
        public void SetUp()
        {
            if (string.IsNullOrWhiteSpace(apiKey))
            {
                throw new ArgumentException("SendGrid Api Key needs to be supplied");
            }

            var sender = new SendGridSender(apiKey, true);

            Email.DefaultSender = sender;
        }
コード例 #5
0
        public async Task SendEmailAsync_ReturnsSuccessResult()
        {
            const string emailFrom   = "*****@*****.**";
            const string emailTo     = "*****@*****.**";
            const string subject     = "test subject";
            const string messageBody = "test body";
            const string guidKey     = "899DE54D-6921-4827-A2A0-DFBA783AC899";

            Mock <SendGridClient> moq = new Mock <SendGridClient>(guidKey, null, null, null, null);

            SendGrid.Response result = await SendGridSender.SendEmailAsync(moq.Object, emailFrom, emailTo, subject, messageBody);

            Assert.True(!Equals(result.Body, null));
        }
コード例 #6
0
        public async Task SendEmailAsync(string email, string subject, string htmlMessage)
        {
            var sender = new SendGridSender(Options.ApiKey);

            Email.DefaultSender = sender;

            var response = await Email.From(Options.From)
                           .To(email)
                           .Subject(subject)
                           .Body(htmlMessage, true)
                           .SendAsync();

            Console.WriteLine(JsonConvert.SerializeObject(response));
        }
コード例 #7
0
        public void TestMessageConstruction()
        {
            var sender = new SendGridSender();

            var messageJob  = this.MockMessageJob();
            var subscribers = this.MockSubscribers();

            var message = sender.ConstructMessage(messageJob, subscribers);

            var expected = subscribers.Select(s => s.Email).ToList();
            var actual   = message.Personalizations.SelectMany(x => x.Tos).Select(x => x.Email).ToList();

            CollectionAssert.AreEquivalent(expected, actual);
            Assert.AreEqual(messageJob.MessageTemplate.BodyHtml, message.HtmlContent);
            Assert.AreEqual(messageJob.MessageTemplate.PlainTextVersion, message.PlainTextContent);
            this.AssertHeader(message);
        }
コード例 #8
0
        public void TestSubscribersResult()
        {
            // Arrange
            var messageJob  = this.MockMessageJob();
            var subscribers = this.MockNotifiableSubscribers();
            var sender      = new SendGridSender();

            // Act
            var message = sender.ConstructMessage(messageJob, subscribers);
            var result  = sender.SendMessage(messageJob, subscribers);

            // Assert
            foreach (var subscriber in subscribers)
            {
                Assert.IsTrue(subscriber.IsNotified);
                Assert.IsTrue(subscriber.Result == SendResultType.Success || subscriber.Result == SendResultType.FailedRecipient);
            }
        }
コード例 #9
0
        public async Task <OperationResult> ResetUserPassword(UserInfo info, string apiKey)
        {
            var checkUser = await context.Users.Where(u => u.AlbumNumber == info.AlbumNumber && u.Role == "Student").FirstOrDefaultAsync();

            if (checkUser == null)
            {
                return(new OperationResult
                {
                    Result = false,
                    Error = "Brak studenta o podanym numerze albumu",
                    Content = null
                });
            }


            UserInfo user = await context.Users.Where(u => u.AlbumNumber == info.AlbumNumber && u.EmailAddress == info.EmailAddress && u.Role == "Student").FirstOrDefaultAsync();

            if (user == null)
            {
                return(new OperationResult
                {
                    Result = false,
                    Error = "Adres email nie jest zgodny z numerem albumu studenta",
                    Content = null
                });
            }

            string newPassword = RandomPassword.GenerateTemporaryPassword();

            using (SendGridSender sender = new SendGridSender(apiKey))
            {
                var result = await sender.SendEmail_ResetUserPassword(user.EmailAddress, user.FirstName, user.LastName, newPassword);

                if (result.Result)
                {
                    await IncreaseSendGridAccount();

                    user.Password = Cryptor.Encrypt(newPassword);
                    await context.SaveChangesAsync();
                }

                return(result);
            }
        }
コード例 #10
0
        private static async Task SendMail(ILogger log, Shared.Models.UserInformation userToInform)
        {
            //Mail sending process
            var sendGridSender = new SendGridSender();
            var response       = await sendGridSender
                                 .SendMail("*****@*****.**", new List <string>() { userToInform.Email },
                                           "CoronaTestPlattform - Your CoViD19 test appointment has been scheduled",
                                           $"Hi {userToInform.Name} </ br> your test was scheduled at the testcenter: <b> {userToInform.Location} </b>.",
                                           $"Hi {userToInform.Name} your test was scheduled at the testcenter: {userToInform.Location}.",
                                           SendGridConfigBuilder.GetConfigFromEnvVars().sendGridApiKey);

            if (response != HttpStatusCode.Accepted)
            {
                log.LogError($"Error while trying to send mail to user. Got response code {response} from sendmail");
            }
            else
            {
                log.LogInformation($"We have send an appointment mail to {userToInform.Email}");
            }
        }
コード例 #11
0
        public async Task SendEmailAsync(SendEmailRequest request)
        {
            var apiKey = await _apiKeyProvider.GetApiKeyAsync();

            var sender = new SendGridSender(apiKey);

            FluentEmail.Core.Email.DefaultSender = sender;

            FluentEmail.Core.Email.DefaultRenderer = new RazorRenderer();

            var email = FluentEmail.Core.Email
                        .From("*****@*****.**")
                        .To(request.To)
                        .Subject(request.Subject)
                        .UsingTemplateFromFile(
                Path.Combine(_templatesPathProvider.GetEmailTemplatesPath(), $"{request.Template}.cshtml"),
                request.Model);

            await email.SendAsync();
        }
コード例 #12
0
        public void SetUp()
        {
            var sender = new SendGridSender(apiKey, true);

            Email.DefaultSender = sender;
        }