public Task <SmtpCommandReply> HandleData(Stream stream) { stream.CopyTo(Body); Body.Seek(0, SeekOrigin.Begin); return(SmtpCommandReply.CreateDefault250SuccessTask()); }
public Task <SmtpCommandReply> HandleRset() { HeloHostname = null; EhloHostname = null; MailFrom = null; Recipients = new List <string>(); return(SmtpCommandReply.CreateDefault250SuccessTask()); }
public Task <SmtpCommandReply> HandleMailFrom(string fromAddress) { var accountRepository = _container.GetInstance <IAccountRepository>(); var account = accountRepository.GetByNameAsync(fromAddress).Result; bool isLocalAccount = account != null; _state.FromAddress = fromAddress; return(SmtpCommandReply.CreateDefault250SuccessTask()); }
public Task <SmtpCommandReply> HandleData(Stream stream) { var blobClient = _storageAccount.CreateCloudBlobClient(); var mailContainer = blobClient.GetContainerReference("mail"); var mailBlobName = $"{Guid.NewGuid()}.eml"; var mailBlob = mailContainer.GetBlockBlobReference(mailBlobName); mailBlob.UploadFromStream(stream); return(SmtpCommandReply.CreateDefault250SuccessTask()); }
public async Task <SmtpCommandReply> HandleData(Stream stream) { var message = new Message { From = _state.FromAddress, State = MessageState.Delivering, Recipients = _state.Recipients, Size = stream.Length }; var messageRepository = _container.GetInstance <IMessageRepository>(); await messageRepository.InsertAsync(message, stream); return(SmtpCommandReply.CreateDefault250Success()); }
public Task <SmtpCommandReply> HandleRcptTo(string recipientAddress) { var accountRepository = _container.GetInstance <IAccountRepository>(); var account = accountRepository.GetByNameAsync(recipientAddress).Result; var recipient = new Recipient { AccountId = account != null ? account.Id : 0, Address = recipientAddress, OriginalAddress = recipientAddress }; _state.Recipients.Add(recipient); return(SmtpCommandReply.CreateDefault250SuccessTask()); }
public Task <SmtpCommandReply> HandleRcptTo(string recipientAddress) { var blobClient = _storageAccount.CreateCloudBlobClient(); var recipientsContainer = blobClient.GetContainerReference("recipients"); var recipientBlob = recipientsContainer.GetBlockBlobReference(recipientAddress); if (recipientBlob.Exists()) { return(SmtpCommandReply.CreateDefault250SuccessTask()); } else { return(Task.Run(() => new SmtpCommandReply(550, "No suchu ser."))); } }
public void TestCompleteSmtpServerSession() { var commandHandlerMock = new Mock <ISmtpServerCommandHandler>(); commandHandlerMock.Setup(f => f.HandleHelo("example.com")).Returns(SmtpCommandReply.CreateDefault250SuccessTask); commandHandlerMock.Setup(f => f.HandleMailFrom("*****@*****.**")).Returns(SmtpCommandReply.CreateDefault250SuccessTask); commandHandlerMock.Setup(f => f.HandleRcptTo("*****@*****.**")).Returns(SmtpCommandReply.CreateDefault250SuccessTask); commandHandlerMock.Setup(f => f.HandleData(It.IsAny <MemoryStreamWithFileBacking>())) .Callback((Stream stream) => VerifyMemoryStreamContents(stream, "Hello World\r\n")) .Returns(SmtpCommandReply.CreateDefault250SuccessTask()); var data = "Hello World\r\n.\r\n"; var memory = new MemoryStream(Encoding.UTF8.GetBytes(data)); var connectionMock = ConnectionMockFactory.Create(new string[] { "HELO example.com", "MAIL FROM: [email protected]", "RCPT TO: [email protected]", "DATA", "QUIT" }, new [] { memory }); SmtpServerSession session = new SmtpServerSession(commandHandlerMock.Object, new NullLog(), new SmtpServerSessionConfiguration()); var task = session.HandleConnection(connectionMock); task.Wait(); commandHandlerMock.Verify(f => f.HandleHelo("example.com")); }
public Task <SmtpCommandReply> HandleMailFrom(string fromAddress) { _fromAddress = fromAddress; return(SmtpCommandReply.CreateDefault250SuccessTask()); }
public Task <SmtpCommandReply> HandleEhlo(string hostName) { return(SmtpCommandReply.CreateDefault250SuccessTask()); }
public Task <SmtpCommandReply> HandleRset() { return(SmtpCommandReply.CreateDefault250SuccessTask()); }
public Task <SmtpCommandReply> HandleRcptTo(string recipientAddress) { Recipients.Add(recipientAddress); return(SmtpCommandReply.CreateDefault250SuccessTask()); }
public Task <SmtpCommandReply> HandleHelo(string hostName) { HeloHostname = hostName; return(SmtpCommandReply.CreateDefault250SuccessTask()); }