Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • Hotfix/1389-projectForbiddenCharacters
  • Issue/1910-MigrationtoNET6.0
  • Issue/1968-replaceContactEmails
  • Issue/2263-changeMailingDomain
  • Issue/2309-docs
  • Issue/50-signatureOfMails
  • Product/1089-htmlEmail
  • Product/1287-dotnet5Sharepoint
  • Product/407-net5migration
  • Sprint/2020-20
  • Sprint/2021-01
  • Sprint/2021-03
  • Sprint/2021-05
  • Sprint/2021-22
  • Sprint/2021-23
  • Sprint/2022-01
  • Sprint/2022-05
  • Sprint/2023
  • Topic/1126-enableHTMLEmail
  • Topic/1226-emailLibraryMigration
  • Topic/1334-dotnet5migration
  • dev
  • gitkeep
  • master
  • test_localfeed
  • v1.0.0
  • v1.0.1
  • v1.1.0
  • v1.2.0
  • v1.3.0
  • v2.0.0
  • v2.0.1
  • v2.1.0
  • v2.2.0
  • v2.3.0
  • v2.3.1
  • v2.3.2
  • v2.3.3
38 results

Target

Select target project
  • coscine/backend/libraries/email
1 result
Select Git revision
  • Hotfix/1389-projectForbiddenCharacters
  • Issue/1910-MigrationtoNET6.0
  • Issue/1968-replaceContactEmails
  • Issue/2263-changeMailingDomain
  • Issue/2309-docs
  • Issue/50-signatureOfMails
  • Product/1089-htmlEmail
  • Product/1287-dotnet5Sharepoint
  • Product/407-net5migration
  • Sprint/2020-20
  • Sprint/2021-01
  • Sprint/2021-03
  • Sprint/2021-05
  • Sprint/2021-22
  • Sprint/2021-23
  • Sprint/2022-01
  • Sprint/2022-05
  • Sprint/2023
  • Topic/1126-enableHTMLEmail
  • Topic/1226-emailLibraryMigration
  • Topic/1334-dotnet5migration
  • dev
  • gitkeep
  • master
  • test_localfeed
  • v1.0.0
  • v1.0.1
  • v1.1.0
  • v1.2.0
  • v1.3.0
  • v2.0.0
  • v2.0.1
  • v2.1.0
  • v2.2.0
  • v2.3.0
  • v2.3.1
  • v2.3.2
  • v2.3.3
38 results
Show changes

Commits on Source 5

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<Version>2.3.2</Version></PropertyGroup>
<ItemGroup>
<PackageReference Include="Coscine.Configuration" Version="2.1.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="NUnit" Version="3.13.2" />
<PackageReference Include="NUnit3TestAdapter" Version="4.0.0" />
<PackageReference Include="coverlet.collector" Version="3.1.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Email\Email.csproj" />
</ItemGroup>
</Project>
using NUnit.Framework;
using System;
using System.Threading.Tasks;
using Coscine.Configuration;
namespace Coscine.Email.Tests
{
public class EmailTest
{
private static readonly IConfiguration _configuration = new ConsulConfiguration();
private static readonly string _port = _configuration.GetStringAndWait("coscine/global/email/port");
private static readonly string _host = _configuration.GetStringAndWait("coscine/global/email/host");
private static readonly string _from = _configuration.GetStringAndWait("coscine/global/email/from");
private static readonly string to = "westerhoff@itc.rwth-aachen.de";
private static readonly string mailSubject = "Test Email";
private static readonly string content = "Das ist eine Test Email.";
[Test]
public void SendEmailTest()
{
Email email = new Email(_port, _host, null, null);
bool a = email.SendEmail(_from, to, null, mailSubject, content);
email.Dispose();
Assert.True(a);
}
[Test]
public async Task SendEmailAsyncTest()
{
Email email = new Email(_port, _host, null, null);
await email.SendEmailAsync(_from, to, null, mailSubject, content);
email.Dispose();
Assert.Pass();
}
}
}
\ No newline at end of file
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16 # Visual Studio Version 17
VisualStudioVersion = 16.0.28803.352 VisualStudioVersion = 17.0.32112.339
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Email", "Email/Email.csproj", "{2A331B4B-50C2-43BD-9178-06F138B5E4DB}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Email", "Email\Email.csproj", "{2A331B4B-50C2-43BD-9178-06F138B5E4DB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Email.Tests", "Email.Tests\Email.Tests.csproj", "{84D59E93-9BF9-4BCD-A9DF-166ECBAA57B2}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
...@@ -15,6 +17,10 @@ Global ...@@ -15,6 +17,10 @@ Global
{2A331B4B-50C2-43BD-9178-06F138B5E4DB}.Debug|Any CPU.Build.0 = Debug|Any CPU {2A331B4B-50C2-43BD-9178-06F138B5E4DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2A331B4B-50C2-43BD-9178-06F138B5E4DB}.Release|Any CPU.ActiveCfg = Release|Any CPU {2A331B4B-50C2-43BD-9178-06F138B5E4DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2A331B4B-50C2-43BD-9178-06F138B5E4DB}.Release|Any CPU.Build.0 = Release|Any CPU {2A331B4B-50C2-43BD-9178-06F138B5E4DB}.Release|Any CPU.Build.0 = Release|Any CPU
{84D59E93-9BF9-4BCD-A9DF-166ECBAA57B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{84D59E93-9BF9-4BCD-A9DF-166ECBAA57B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{84D59E93-9BF9-4BCD-A9DF-166ECBAA57B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{84D59E93-9BF9-4BCD-A9DF-166ECBAA57B2}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
......
using System; using MailKit.Net.Smtp;
using MailKit.Security;
using MimeKit;
using MimeKit.Text;
using System;
using System.IO; using System.IO;
using System.Net.Mail;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Web; using System.Web;
namespace Coscine.Email namespace Coscine.Email
{ {
// TODO: Migrate to Mailkit
public class Email : IEmail, IDisposable public class Email : IEmail, IDisposable
{ {
private readonly SmtpClient _client; private readonly SmtpClient _client;
public Email(string port, string host, string credentialName, string credentialPasswort, bool ssl = false) public Email(string port, string host, string credentialName, string credentialPassword, bool ssl = false)
{ {
_client = new SmtpClient(); _client = new SmtpClient();
int.TryParse(port, out int portTemp);
_client.Port = portTemp; bool parsed = int.TryParse(port, out int portTemp);
_client.DeliveryMethod = SmtpDeliveryMethod.Network; if (!parsed)
if (string.IsNullOrWhiteSpace(credentialName))
{
_client.UseDefaultCredentials = false;
}
else
{ {
_client.Credentials = new System.Net.NetworkCredential(credentialName, credentialPasswort); throw new FormatException("Please check the provided port!");
} }
if (ssl) _client.Connect(host, portTemp, ssl);
if (!string.IsNullOrEmpty(credentialName) && !string.IsNullOrEmpty(credentialPassword))
{ {
_client.EnableSsl = true; _client.Authenticate(credentialName, credentialPassword);
} }
_client.Host = host;
} }
public bool SendEmail(string from, string to, string cc, string mailSubject, Stream content) public bool SendEmail(string from, string to, string cc, string mailSubject, Stream content)
...@@ -43,11 +39,11 @@ namespace Coscine.Email ...@@ -43,11 +39,11 @@ namespace Coscine.Email
{ {
try try
{ {
MailMessage mail = CreateMailMessage(from, to, cc, mailSubject, content); MimeMessage mail = CreateMailMessage(from, to, cc, mailSubject, content);
_client.Send(mail); _client.Send(mail);
return true; return true;
} }
catch (SmtpException) catch (Exception)
{ {
return false; return false;
} }
...@@ -60,8 +56,8 @@ namespace Coscine.Email ...@@ -60,8 +56,8 @@ namespace Coscine.Email
public async Task SendEmailAsync(string from, string to, string cc, string mailSubject, string content) public async Task SendEmailAsync(string from, string to, string cc, string mailSubject, string content)
{ {
MailMessage mail = CreateMailMessage(from, to, cc, mailSubject, content); MimeMessage mail = CreateMailMessage(from, to, cc, mailSubject, content);
await _client.SendMailAsync(mail); await _client.SendAsync(mail);
} }
private static string StreamToString(Stream content) private static string StreamToString(Stream content)
...@@ -74,22 +70,21 @@ namespace Coscine.Email ...@@ -74,22 +70,21 @@ namespace Coscine.Email
return s; return s;
} }
private static MailMessage CreateMailMessage(string from, string to, string cc, string mailSubject, string content) private static MimeMessage CreateMailMessage(string from, string to, string cc, string mailSubject, string content)
{
MailMessage mail = new MailMessage(from, to)
{ {
Subject = HttpUtility.HtmlDecode(mailSubject), MimeMessage email = new MimeMessage();
IsBodyHtml = true
}; email.From.Add(MailboxAddress.Parse(from));
mail.SubjectEncoding = System.Text.Encoding.UTF8; email.To.Add(MailboxAddress.Parse(to));
email.Subject = HttpUtility.HtmlDecode(mailSubject);
email.Body = new TextPart(TextFormat.Html) { Text = content };
if (!string.IsNullOrEmpty(cc)) if (!string.IsNullOrEmpty(cc))
{ {
mail.CC.Add(new MailAddress(cc)); email.Cc.Add(MailboxAddress.Parse(cc));
} }
mail.Body = content;
return mail; return email;
} }
public void Dispose() public void Dispose()
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<RootNamespace>Coscine.Email</RootNamespace> <RootNamespace>Coscine.Email</RootNamespace>
<AssemblyName>Coscine.Email</AssemblyName> <AssemblyName>Coscine.Email</AssemblyName>
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<Version>2.3.1</Version> <Version>2.3.2</Version>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<Authors>RWTH Aachen University</Authors> <Authors>RWTH Aachen University</Authors>
......