A simple, modern and coroutine based Kotlin Email API for clientside projects

Related tags

App kotlin mail smtp
Overview

Kotlinmailer Logo Kotlinmailer Logo

Kotlinmailer is a Kotlin Mail API, using coroutines and providing DSLs. It may be used in a Ktor Backend for verification mails.

This project is a hard fork from SimpleKotlinMail which is no more actively worked on.

Features

  • build emails
  • send emails (using an external SMTP server)
  • TLS support

To get started, visit the Documentation.

Setup

Using Kotlinmailer requires Kotlin compiler 1.4.0 or higher due to the dependency on Kotlin Serialization

Gradle

Kotlin DSL:

repositories {
    mavenCentral()
}

dependencies {
    implementation("at.quickme.kotlinmailer:kotlinmailer-core:0.2.0")
    // Optional for Kotlinx HTML DSL support
    implementation("at.quickme.kotlinmailer:kotlinmailer-html:0.2.0")
}

Groovy DSL:

repositories {
    mavenCentral()
}

dependencies {
    implementation "at.quickme.kotlinmailer:kotlinmailer-core:0.2.0"
    // Optional for Kotlinx HTML DSL support
    implementation "at.quickme.kotlinmailer:kotlinmailer-html:0.2.0"
}

JVM Version

To be able to use the inline functions of the API, you have to configure the JVM version (if you have not done that already).

tasks.withType<KotlinCompile> {
    kotlinOptions.jvmTarget = jvmVersionString // <- e.g. 11
}

Examples

The purpose of the following code snippets is to provide an insight into the API. However, they are not suitable for learning the API, you should use the actual documentation for this.

Build

Build an email:

val email = emailBuilder {
    from("[email protected]")
    to("[email protected]")

    withSubject("Important question")
    withPlainText("Hey, how are you doing?")
}

Send

Send that email:

suspend fun main() = email.send()

Convert

// EML String -> Email
string.toEmail()
// MimeMessage -> Email
mimeMessage.email

HTML

Inside the email builder, you can easily access kotlinx.html:

emailBuilder {
    withHTML {
        div {
            h1 { +"Really important question!" }
            p { +"Hey, how are you doing?" }
        }
    }
}

And more

To learn more about Kotlinmailer, visit the Documentation.

Project information

This project uses SimpleJavaMail to deal with java MimeMessages in a more elegant way.

If you use the documented functionality of SimpleKotlinMail, everything will make use of kotlinx.coroutines.

You might also like...
🎥 A Simple and Minimal Movies Android Application to demonstrate the Modern Android Development and Jetpack Compose.
🎥 A Simple and Minimal Movies Android Application to demonstrate the Modern Android Development and Jetpack Compose.

ComposeMovie Android 🎥 A Simple and Minimal Movies Android Application to demonstrate the Modern Android Development and Jetpack Compose. Built with

Healthify - An app to track your daily water intake and sleep and boost your work efficiency. Healthify is built using Kotlin and follows all modern android Development practices and hence is a good learning resource for beginners
Healthify - An app to track your daily water intake and sleep and boost your work efficiency. Healthify is built using Kotlin and follows all modern android Development practices and hence is a good learning resource for beginners

Healthify Healthify is an app to track your daily water intake and sleep and boost your work efficiency. Video Introduction 📹 This is a small introdu

An Open Source App which enables users to drop all their professional handles and projects at one place.
An Open Source App which enables users to drop all their professional handles and projects at one place.

An Open Source App which enables users to drop all their professional handles and projects at one place. This is a Beginner Friendly Repository made for Open Source Enthusiasts who can contribute to the App during HacktoberFest 2021.

Help users of coding platforms to create findable, well documented, secure and offering good quality projects

The Ambassador The Ambassador will help users of coding platforms to create findable, well documented and offering good quality projects. It measures

This app is used to divide a particular task in subtask and assign it to others with priorities. This may be useful for team projects or collaborative work
This app is used to divide a particular task in subtask and assign it to others with priorities. This may be useful for team projects or collaborative work

TaskDivider-Android-App This app is used to divide a particular task in subtask and assign it to others with priorities. This may be useful for team p

Easy setup of static analysis tools for Android and Java projects.

[DEPRECATED] Gradle static analysis plugin ⚠️ A fork of this project is maintained at https://github.com/GradleUp/static-analysis-plugin/ Please migra

Dev Experience is a set of projects to make life easier for developers, in order to import, configure and use.

Dev Experience The experience that all developer need Dev Experience is a set of projects to make life easier for developers, in order to import, conf

💰 Expense Manager is simple, intuitive, stable and modern app that is just designed for you.
💰 Expense Manager is simple, intuitive, stable and modern app that is just designed for you.

Expense Manager is simple, intuitive, stable and modern app that is just designed for you. Everything you need at your fingertips to manage the expenditures and budgets.

A Simple and Minimal Quotes Android Application to demonstrate the Modern Android Development tools
A Simple and Minimal Quotes Android Application to demonstrate the Modern Android Development tools

Quotee Android 📑 A Simple and Minimal Quotes Android Application to demonstrate the Modern Android Development tools. Developed with ❤️ by Aminullah

Comments
  • Compatibility issues when used for an Android App

    Compatibility issues when used for an Android App

    Hi everyone, I tried to use this library for my android project and i got this error message:

    Duplicate class jakarta.activation.ActivationDataFlavor found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.CommandInfo found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.CommandInfo$Beans found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.CommandInfo$Beans$1 found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.CommandMap found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.CommandObject found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.DataContentHandler found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.DataContentHandlerFactory found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.DataHandler found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.DataHandler$1 found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.DataHandlerDataSource found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.DataSource found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.DataSourceDataContentHandler found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.FileDataSource found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.FileTypeMap found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.MailcapCommandMap found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.MailcapCommandMap$1 found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.MimeType found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.MimeTypeParameterList found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.MimeTypeParseException found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.MimetypesFileTypeMap found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.MimetypesFileTypeMap$1 found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.ObjectDataContentHandler found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.SecuritySupport found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.SecuritySupport$1 found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.SecuritySupport$2 found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.SecuritySupport$3 found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.SecuritySupport$4 found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.SecuritySupport$5 found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.URLDataSource found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.activation.UnsupportedDataTypeException found in modules jakarta.activation-2.0.1 (com.sun.activation:jakarta.activation:2.0.1) and jakarta.activation-api-2.1.0 (jakarta.activation:jakarta.activation-api:2.1.0)
    Duplicate class jakarta.mail.Address found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.AuthenticationFailedException found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Authenticator found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.BodyPart found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.EncodingAware found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.EventQueue found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.EventQueue$QueueElement found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.EventQueue$TerminatorEvent found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.FetchProfile found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.FetchProfile$Item found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Flags found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Flags$Flag found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Folder found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.FolderClosedException found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.FolderNotFoundException found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Header found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.IllegalWriteException found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.MailSessionDefinition found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.MailSessionDefinitions found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Message found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Message$RecipientType found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.MessageAware found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.MessageContext found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.MessageRemovedException found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.MessagingException found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.MethodNotSupportedException found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Multipart found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.MultipartDataSource found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.NoSuchProviderException found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Part found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.PasswordAuthentication found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Provider found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Provider$Type found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Quota found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Quota$Resource found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.QuotaAwareStore found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.ReadOnlyFolderException found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.SendFailedException found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Service found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Session found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Session$1 found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Session$2 found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Session$3 found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Session$4 found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Session$5 found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Session$6 found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Session$7 found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Session$8 found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Store found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.StoreClosedException found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.StreamLoader found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Transport found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.UIDFolder found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.UIDFolder$FetchProfileItem found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.URLName found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.Version found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.event.ConnectionAdapter found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.event.ConnectionEvent found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.event.ConnectionListener found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.event.FolderAdapter found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.event.FolderEvent found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.event.FolderListener found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.event.MailEvent found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.event.MessageChangedEvent found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.event.MessageChangedListener found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.event.MessageCountAdapter found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.event.MessageCountEvent found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.event.MessageCountListener found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.event.StoreEvent found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.event.StoreListener found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.event.TransportAdapter found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.event.TransportEvent found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.event.TransportListener found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.AddressException found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.AsciiOutputStream found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.ContentDisposition found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.ContentType found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.HeaderTokenizer found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.HeaderTokenizer$Token found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.InternetAddress found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.InternetHeaders found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.InternetHeaders$InternetHeader found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.InternetHeaders$MatchEnum found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.InternetHeaders$MatchHeaderEnum found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.InternetHeaders$MatchStringEnum found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.MailDateFormat found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.MailDateFormat$AbstractDateParser found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.MailDateFormat$Rfc2822LenientParser found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.MailDateFormat$Rfc2822StrictParser found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.MimeBodyPart found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.MimeBodyPart$EncodedFileDataSource found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.MimeBodyPart$MimePartDataHandler found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.MimeMessage found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.MimeMessage$RecipientType found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.MimeMultipart found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.MimePart found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.MimePartDataSource found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.MimeUtility found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.NewsAddress found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.ParameterList found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.ParameterList$1 found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.ParameterList$LiteralValue found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.ParameterList$MultiValue found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.ParameterList$ParamEnum found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.ParameterList$ToStringBuffer found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.ParameterList$Value found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.ParseException found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.PreencodedMimeBodyPart found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.SharedInputStream found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.internet.UniqueValue found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.AddressStringTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.AddressTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.AndTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.BodyTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.ComparisonTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.DateTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.FlagTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.FromStringTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.FromTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.HeaderTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.IntegerComparisonTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.MessageIDTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.MessageNumberTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.NotTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.OrTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.ReceivedDateTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.RecipientStringTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.RecipientTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.SearchException found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.SearchTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.SentDateTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.SizeTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.StringTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.search.SubjectTerm found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.util.ByteArrayDataSource found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.util.ByteArrayDataSource$DSByteArrayOutputStream found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.util.SharedByteArrayInputStream found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.util.SharedFileInputStream found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class jakarta.mail.util.SharedFileInputStream$SharedFile found in modules jakarta.mail-2.0.1 (com.sun.mail:jakarta.mail:2.0.1) and jakarta.mail-api-2.1.0 (jakarta.mail:jakarta.mail-api:2.1.0)
    Duplicate class org.jetbrains.annotations.NotNull found in modules annotations-13.0 (org.jetbrains:annotations:13.0) and jetbrains-runtime-annotations-1.0.1 (com.github.bbottema:jetbrains-runtime-annotations:1.0.1)
    Duplicate class org.jetbrains.annotations.Nullable found in modules annotations-13.0 (org.jetbrains:annotations:13.0) and jetbrains-runtime-annotations-1.0.1 (com.github.bbottema:jetbrains-runtime-annotations:1.0.1)
    
    Go to the documentation to learn how to Fix dependency resolution errors.
    
    bug 
    opened by youndon 1
Releases(v0.2.0)
FairEmail is easy to set up and works with virtually all email providers, including Gmail, Outlook and Yahoo!

Downloads • Privacy • Support • License FairEmail Fully featured, open source, privacy oriented email app for Android FairEmail is easy to set up and

Marcel Bokhorst 1.5k Jan 2, 2023
An simple image gallery app utilizing Unsplash API to showcase modern Android development architecture (MVVM + Kotlin + Retrofit2 + Hilt + Coroutines + Kotlin Flow + mockK + Espresso + Junit)

Imagine App An simple image gallery app utilizing Unsplash API. Built with ❤︎ by Wajahat Karim and contributors Features Popular photos with paginatio

Wajahat Karim 313 Jan 4, 2023
Simple Notes app demonstrates modern Android development with Hilt, Material Motion, Coroutines, Flow, Jetpack (Room, ViewModel) based on MVVM architecture.

Simple Notes app demonstrates modern Android development with Hilt, Material Motion, Coroutines, Flow, Jetpack (Room, ViewModel) based on MVVM architecture.

Aravind Chowdary 2 Sep 3, 2022
Movie Android App written in Kotlin, MVVM, RxJava, Coroutine (Upcoming), Android Architecture Components and Jetpack Compose (Upcoming).

MovieHunt MovieHunt is a sample Android project using The Movie DB API based on MVVM architecture. It showcases the latest Android tech stacks with we

Engine Bai 596 Dec 31, 2022
simple-flank is a Gradle plugin to use Flank in Android projects with no configuration needed

simple-flank simple-flank is a new gradle plugin with a clear focus: make the setup as simple as possible. Applied to any application or library modul

Flank 8 May 10, 2022
Android Clean Architecture Kick Start project with MVVM, Coroutine, DI, Caching, Networking.

Android Clean Architecture Kick Start project with MVVM, Coroutine, DI, Caching, Networking Stacks: Clean Architecture MVVVM Local Caching (StoreX) Ne

Romman Sabbir 3 Jun 18, 2022
(Coroutine, Flow(+StateFlow), Hilt, JetPack, MVVM, Repository Pattern, Retrofit2 & OkHttp3, Moshi, Glide, Timber, Material-Components)

(Coroutine, Flow(+StateFlow), Hilt, JetPack, MVVM, Repository Pattern, Retrofit2 & OkHttp3, Moshi, Glide, Timber, Material-Components)

훈성 2 Nov 15, 2022
An Open-Source repository that contains all the Android Dev and Kotlin concepts and several projects on android ranging in difficulty making this repo completely beginner-friendly.

An Open-Source repository that contains all the Android Dev and Kotlin concepts and several projects on android ranging in difficulty making this repo completely beginner-friendly. The main aim of this repository is to help students who are learning Android Development or preparing for an Android Developer role-based job.

Mimo Patra 15 Dec 29, 2022
NewsApp is a an android project based on modern Android application tech-stacks and MVVM architecture.

NewsApp NewsApp is a an android project based on modern Android application tech-stacks and MVVM architecture. This project is for focusing especially

null 1 Jan 14, 2022
☀️ Wheater is a small demo application based on modern Android tech-stacks and MVVM architecture. ⛅

Wheater is a small demo application based on modern Android tech-stacks and MVVM architecture. Tech stack & Open-source libraries Minimum SDK level 19

null 2 Jan 17, 2022