Ejemplo n.º 1
0
        private static async Task SendResponseAsync(SmtpConnection connection, SmtpResponse response)
        {
            LogResponse(response);

            foreach (var additional in response.AdditionalLines)
            {
                await connection.WriteLineAsyncAndFireEvents(additional);
            }

            await connection.WriteLineAsyncAndFireEvents(response.ResponseCode + " " + response.ResponseText);
        }
Ejemplo n.º 2
0
        private static bool IsLineTooLong(byte[] lineBuf, out SmtpResponse smtpResponse)
        {
            if (lineBuf.Length > 2040)
            {
                smtpResponse = SmtpResponses.LineTooLong;
                return(true);
            }

            smtpResponse = SmtpResponses.None;
            return(false);
        }
        private SmtpResponse VerifyEhlo()
        {
            var smtpCapabilities = _getSmtpCapabilities.GetCapabilities().ToList();

            if (!smtpCapabilities.Any())
            {
                return(SmtpResponses.OK);
            }

            var additionalLines = smtpCapabilities.Skip(1).Select(capability => "250-" + capability).ToList();

            var response = new SmtpResponse(250, smtpCapabilities.First().ToString(), additionalLines);

            return(response);
        }
Ejemplo n.º 4
0
        private static void LogResponse(SmtpResponse response)
        {
            var logger = MailServerLogger.Instance;

            if (logger.LogLevel < MailServerLogLevel.Debug)
            {
                return;
            }

            var logMessage = new StringBuilder();

            foreach (var additionalLine in response.AdditionalLines)
            {
                logMessage.AppendLine(">>> " + additionalLine);
            }

            logMessage.AppendLine(">>> " + response.ResponseCode + " " + response.ResponseText);
            logger.Debug(logMessage.ToString());
        }
Ejemplo n.º 5
0
 private bool ProcessRawLineHasResponse(string line, out SmtpResponse smtpResponse)
 {
     smtpResponse = ProcessRawLine(line);
     return(smtpResponse != SmtpResponses.None);
 }