Example #1
0
        private void Init()
        {
            result.Succeed = true;
            result.Message = string.Format("{1}:第{0}组发送中...", index, DateTime.Now.ToString());
            OnSend(result);

            client.Connect(server, port, SslSecurityMode.Implicit);
            client.Authenticate(userName, passWord);
        }
        private void LoginSmtp()
        {
            Smtp.Authenticated += (sender, args) => OnAuthenticated(args.Message);

            var secureSocketOptions = SecureSocketOptions.Auto;

            switch (Account.IncomingEncryptionType)
            {
            case EncryptionType.StartTLS:
                secureSocketOptions = SecureSocketOptions.StartTlsWhenAvailable;
                break;

            case EncryptionType.SSL:
                secureSocketOptions = SecureSocketOptions.SslOnConnect;
                break;

            case EncryptionType.None:
                secureSocketOptions = SecureSocketOptions.None;
                break;
            }

            Log.Debug("Smtp.Connect({0}:{1}, {2})", Account.Server, Account.Port, Enum.GetName(typeof(SecureSocketOptions), secureSocketOptions));

            Smtp.Connect(Account.SmtpServer, Account.SmtpPort,
                         Account.OutcomingEncryptionType == EncryptionType.StartTLS ||
                         Account.OutcomingEncryptionType == EncryptionType.SSL
                    ? SecureSocketOptions.Auto
                    : SecureSocketOptions.None, CancelToken);

            if (!Account.SmtpAuth)
            {
                return;
            }

            if (string.IsNullOrEmpty(Account.RefreshToken))
            {
                Smtp.AuthenticationMechanisms.Remove("XOAUTH2");
                Smtp.Authenticate(Account.SmtpAccount, Account.SmtpPassword, CancelToken);
            }
            else
            {
                Smtp.Authenticate(Account.SmtpAccount, GetOauthAccessToken(Account.RefreshToken), CancelToken);
            }
        }