Skip to content

AshHydra/email-sender

Repository files navigation

Úkol 1 - Email Sender

UTB FAI Task Java Gradle

Maximální počet bodů 4 bodů
Způsob komunikace s aplikací Parametry předané při spuštění
Způsob testování aplikace Na základě odesílaných emailů

📝 Zadání úkolu

Vaším prvním úkolem je doplnit implementaci třídy EmailSender, která umožní odesílat emailové zprávy pomocí SMTP protokolu. Třída EmailSender by měla umožnovat následující:

  1. Konstruktor EmailSender(String host, int port): Konstruktor otevře spojení se zadaným SMTP serverem na daném portu.

  2. Metoda send(String from, String to, String subject, String text): Metoda odesílá emailovou zprávu z určeného emailu na zadaný email příjemce s daným předmětem a textem.

  3. Metoda close(): Metoda odesílá příkaz QUIT na SMTP server a zavírá spojení.

package utb.fai;

import java.net.*;
import java.io.*;
 
public class EmailSender {
    /*
     * Constructor opens Socket to host/port. If the Socket throws an exception during opening,
     * the exception is not handled in the constructor.
     */
    public EmailSender(String host, int port) throws UnknownHostException, IOException {
       
    }
    /*
     * Sends email from an email address to an email address with some subject and text.
     * If the Socket throws an exception during sending, the exception is not handled by this method.
     */
    public void send(String from, String to, String subject, String text) throws IOException {
       
    }
   
    /*
     * Sends QUIT and closes the socket
     */
    public void close() {
       
    }
}

Druhým úkolem bude doplnění implementace ve třídě Main pro zpracování parametrů předaných aplikaci při spuštění. Při testování aplikace bude testovací nástroj tímto způsobem aplikaci předávat parametry a nasledně hodnotit chování vaší aplikace.

Struktura pole argumentů parametrů

  1. args[0] - Adresa SMTP serveru (String)
  2. args[1] - Číslo portu SMTP serveru (int)
  3. args[2] - Email odesílatele (String)
  4. args[3] - Email příjemce (String)
  5. args[4] - Předmět emailu (String)
  6. args[5] - Obsah emailu (String)
package utb.fai;

public class App {
 
    public static void main(String[] args) {
        // TODO: Implement input parameter processing

        try {
            EmailSender sender = new EmailSender("smtp.utb.cz", 25);
            sender.send("[email protected]", "[email protected]", "Email from Java", "Funguje to?\nSnad...");
            sender.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Poznámka: Implementace a struktura kódu aplikace je libovolná a je zcela na vás, jak tento problém vyřešíte. Je však důležité, aby aplikace splňovala zadané požadavky.


🏆 Způsob hodnocení

Vaše implementace bude hodnocena na základě chování aplikace při testování různých scénářů. Automatizovaný testovací nástroj bude předávat vaší aplikaci různé parametry, včetně platných a neplatných, aby otestoval její chování za různých podmínek. V případě testování síťové komunikace mezi více klienty, testovací nástroj bude vytvářet virtuální klienty/servery za účelem ověření funkcionality.

Výsledné hodnocení bude záviset na celkovém počtu úspěšných testovacích případů. Počet bodů získaných z úlohy bude tedy záviset na celkové úspěšnosti při testování. Váš výsledný počet bodů bude určen následujícím vzorcem.

VP = MB * (UT / CPT)

Popis symbolů:

  • VP: Výsledný počet bodů.
  • MB: Maximální počet bodů pro danou úlohu.
  • UT: Počet úspěšných testovacích případů.
  • CPT: Celkový počet testovacích případů.

⚙️ Jak spustit automatizované hodnocení lokálně na svém počítači?

Automatizované hodnocení můžete spustit lokálně za účelem ověření funkčnosti vaší aplikace. K tomu slouží předpřipravený skript, který je dostupný v repozitáři tohoto úkolu. Výsledný report testování se bude nacházet v souboru test_report.html.

Pro uživatele systému Linux:

Spusťte skript s názvem run_local_test.sh.

Pro uživatele systému Windows:

Spusťte skript s názvem run_local_test.bat.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages