Skip to content

Commit

Permalink
Merge pull request #27 from joaopgrassi/bug/26_mimekit_incompletebody
Browse files Browse the repository at this point in the history
Fix sending emails with MailKit
  • Loading branch information
cmendible committed Feb 27, 2020
2 parents 1a01c57 + a0ffbaf commit 67a071f
Show file tree
Hide file tree
Showing 7 changed files with 82 additions and 34 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,5 @@ obj/
*.sbr
*.scc
*.sig
/packages
/packages
.vs
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[![Build Status](https://mendible.visualstudio.com/mendible/_apis/build/status/cmendible.netDumbster)](https://mendible.visualstudio.com/mendible/_build/latest?definitionId=2) [![Build status](https://ci.appveyor.com/api/projects/status/su9xd1ddo1bv5q4i?svg=true)](https://ci.appveyor.com/project/cmendible/netdumbster)
[![Build Status](https://mendible.visualstudio.com/mendible/_apis/build/status/cmendible.netDumbster)](https://mendible.visualstudio.com/mendible/_build/latest?definitionId=2)

# netDumbster
is a .Net Fake SMTP Server clone of the popular Dumbster (http://quintanasoft.com/dumbster/)
Expand Down
30 changes: 0 additions & 30 deletions appveyor.yml

This file was deleted.

2 changes: 1 addition & 1 deletion azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core?view=vsts

pool:
vmImage: 'VS2017-Win2016'
vmImage: 'windows-2019'

variables:
buildConfiguration: 'Release'
Expand Down
76 changes: 76 additions & 0 deletions netDumbster.Test/MailKitTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
using MailKit.Net.Smtp;
using MimeKit;
using netDumbster.smtp;
using netDumbster.smtp.Logging;
using System;
using System.Threading.Tasks;
using Xunit;

namespace netDumbster.Test
{
public class MailKitTests : IDisposable
{
private bool _disposed;
private readonly SimpleSmtpServer _server;

public MailKitTests()
{
LogManager.GetLogger = type => new ConsoleLogger(type);

_server = Configuration.Configure()
.WithRandomPort()
.Build();
}

/// <summary>
/// As reported: <see href="https://github.com/cmendible/netDumbster/issues/26"/>
/// </summary>
[Fact]
public async Task Send_WithMailKit_WholeBodyMessageIsPreserved()
{
var expectedBody = "this is the body\r\nline2\r\nline3";

using var client = new SmtpClient
{
ServerCertificateValidationCallback = (_, __, ___, ____) => true
};

await client.ConnectAsync("localhost", _server.Configuration.Port, false).ConfigureAwait(false);
client.AuthenticationMechanisms.Remove("XOAUTH2");

var from = new MailboxAddress("carlos@mendible.com");
var to = new MailboxAddress("karina@mendible.com");

var message = new MimeMessage();

message.From.Add(from);
message.To.Add(to);
message.Subject = "test";
message.Body = new TextPart("plain") { Text = expectedBody };

client.Send(message);

Assert.Equal(1, _server.ReceivedEmailCount);
Assert.Equal(expectedBody, _server.ReceivedEmail[0].MessageParts[0].BodyData);
}

public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}

protected virtual void Dispose(bool disposing)
{
if (_disposed)
return;

if (disposing)
{
_server.Stop();
}

_disposed = true;
}
}
}
1 change: 1 addition & 0 deletions netDumbster.Test/netDumbster.Test.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="MailKit" Version="2.5.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
Expand Down
2 changes: 1 addition & 1 deletion netDumbster/SmtpMessage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public SmtpMessage(RawSmtpMessage rawSmtpMessage)
{
this.rawSmtpMessage = rawSmtpMessage;
var rawMessage = this.rawSmtpMessage.Data.ToString();
rawMessage = rawMessage.Substring(0, rawMessage.Length - 4);
rawMessage = rawMessage.TrimEnd('\r', '\n');
using (MailMessage mailMessage = MailMessageMimeParser.ParseMessage(rawMessage))
{
this.Headers = mailMessage.Headers;
Expand Down

0 comments on commit 67a071f

Please sign in to comment.