C# client for fetching emails from the temp mail service ulm-dsl.
Available on NuGet.
dotnet add package CSharpUlmDsl
or
PM> Install-Package CSharpUlmDsl
The following examples use the email address [email protected]
. Just replace the inbox name max.mustermann
to match your address.
Note that you have to fetch your inbox once before you can receive emails at your address. Your address stays active for 14 days. This period renews for every request.
First create an instance of UlmDslClient
by passing an instance of HttpClient
to its constructor.
var httpClient = new HttpClient();
var client = new UlmDslClient(httpClient);
You can fetch the basic information except the body for all emails in an inbox by calling the GetInbox
/ GetInboxAsync
methods and passing the inbox name.
var emails = client.GetInbox("max.mustermann");
var emails = await client.GetInboxAsync("max.mustermann");
You can get all available information for a specific email by calling the GetMailById
/ GetMailByIdAsync
methods and
passing the inbox name and email identifier.
var email = client.GetMailById("max.mustermann", 7);
var email = await client.GetMailByIdAsync("max.mustermann", 7);
You can get all available information for all emails in an inbox by calling the GetMails
/ GetMailsAsync
methods and
passing the inbox name.
var emails = client.GetMails("max.mustermann");
var emails = await client.GetMailsAsync("max.mustermann");
You can register the UlmDslClient
in your Startup with a typed HttpClient
.
builder.Services.AddHttpClient<UlmDslClient>();
Then inject the client wherever you like. E.g. in a controller:
[Route("Home")]
[ApiController]
public class HomeController : ControllerBase
{
private readonly UlmDslClient _client;
public HomeController(UlmDslClient client)
{
_client = client;
}
}
The api is limited to about 100 requests per minute. So you should keep in mind when this client fires requests:
- When you fetch your inbox only a single request gets fired.
- When you fetch a specific email by id, two requests get fired. One for the basic information e.g. the sender and receiver and one for the email body.
- When you fetch all emails a first request gets fired for the basic information of all emails and then another request per email to retrieve each email body.
So based on your inbox size you should think twice before you fetch all emails. Maybe it's better to just fetch the inbox and then retrieve a single email by id.
Here are some related projects:
- ts-ulm-dsl: Typescript version of this library