Hilfe!! Senden eine Bestätigungsmail

sk_

Neues Mitglied
Hallo Leute,
ich brauche dringend eure Hilfe. Ich muss eine Bestätigungsmail senden können.
Ablauf ist so:
Ich reserviere als Student ein Thema. Und soll eine Email erhalten indem es steht, dass ich mich für das Thema angemeldet habe, aber es noch von der Dozent bestätigt werden muss.

Ein Programmcode steht schon bereit
Ablauf:
Der Student reserviert ein Thema. Und erhält nachdem der Dozent es bestätigt hat eine Email.

Ich wollte es auch so ähnlich programmieren. Aber bin mir jetzt nicht sicher ob es soweit in Ordnung ist.

Hab eine Klasse EMail.
Java:
     /**
     * Diese Methode schickt eine Bestaetigungsemail an den
     * angegebenen Benutzer.
     */
    public final void sendConfirmationMail(final String username,
            final String thema) {
        String nachricht = "Ihr Seminarthema: " + thema
                + " wurde soeben best\u00E4tigt."
                + "\n Viel Erfolg bei der Bearbeitung ihres Themas.";

        mailConfig();

        Properties props = new Properties();
        EMailAuthenticator auth = new EMailAuthenticator();

        this.emailAdr = auth.getPasswordAuthentication().getUserName();
        this.passwort = auth.getPasswordAuthentication().getPassword();

        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.port", port);
        props.put("mail.smtp.host", smtpServer);
        props.put("mail.smtp.auth", authen);

        Session session = Session.getDefaultInstance(props, auth);

        Message message = new MimeMessage(session);

        empfaenger = username + "@web.de";
        try {
            message.setFrom(new InternetAddress(this.emailAdr, benutzer));
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(
                    empfaenger));
            message.setSubject("Best\u00E4tigung ihres Seminarthemas");
            message.setText(nachricht);
            message.setSentDate(new Date());
            message.saveChanges();

            Transport transport = session.getTransport("smtp");
            if (null != smtpServer && null != this.emailAdr
                    && null != this.passwort && this.emailAdr.contains("@")) {
                transport.connect(smtpServer, this.emailAdr, this.passwort);
                transport.sendMessage(message, message.getAllRecipients());
                transport.close();
            }
        } catch (AddressException e) {
            logger.error(e);
        } catch (MessagingException e) {
            logger.error(e);
        } catch (UnsupportedEncodingException e) {
            logger.error(e);
        }
    }


Und Klasse Controller
Java:
 /**
     * Methode aktualisiert den Status einer Reservierung.
     */
    @ProcessAction(name = "statusaendern")
    public final void sendUpdateStatus(final ActionRequest request,
            final ActionResponse response) {
        if (request.getParameter("art") == null
                || request.getParameter("id") == null) {
            response.setRenderParameter("jspPage", "error.jsp");
        } else {
            String grund = (request.getParameter("grund"));
            String art = (request.getParameter("art"));
            String id = (request.getParameter("id"));
            String student = request.getParameter("student");
            String thema = request.getParameter("thema");
            if (checkString(art, "default") && checkString(id, "default")) {
                if (new DBStatementsii().getStatus(id).equals("1")) {
                    new DBStatements().updateStatus(id, art, grund);
                    EMail email = new EMail();
                    response.setRenderParameter("jspPage",
                            "reservierungsuebersicht.jsp");
                    if (art.equals("bestaetigen") && student != null
                        && thema != null) {
                        email.sendConfirmationMail(student, thema);
                    }
                } else {
                    response.setRenderParameter("jspPage", "error.jsp");
                }
            } else {
                response.setRenderParameter("jspPage", "error.jsp");
            }
        }
    }

Und noch Reservierungsuebersicht.jsp wenn das Thema bestätigt wird
Java:
				<form action="<%=statusaendern%>" method="post">
					<input type="submit" value="Bestätigen"
						onclick="return confirm('Wollen Sie dieses Thema wirklich bestätigen? \n \nThema: <%=StringEscapeUtils.escapeHtml(a.getThemaName())%> \nStudent: <%=StringEscapeUtils.escapeHtml(a.getStudentName())%>');">
					<input type="hidden" name="id" value="<%=a.getReservierungID()%>"> <input
						type="hidden" name="art" value="bestaetigen"> <input
						type="hidden" name="student" value="<%=a.getStudentName()%>"> <input
						type="hidden" name="thema" value="<%=a.getThemaName()%>">
				</form> <%

Hab gedacht dass ich es auch so ähnlich progammieren kann. Nur in Email-Klasse eine weitere Methode:
Java:
    /**
     * Diese Methode schickt eine vorlaeufige Bestaetigungsemail an den
     * angegebenen Benutzer.
     */
    public final void sendProvisionalConfirmationMail(final String username,
            final String thema) {
        String nachricht =  "Hallo Student, "
        		+ " Dein Seminarthema: " + thema
                + " wurde soeben vorl\u00E4ufig reserviert."
                + " Jedoch muss der Dozent es noch best\u00E4tigen.";

        mailConfig();

        Properties props = new Properties();
        EMailAuthenticator auth = new EMailAuthenticator();

        this.emailAdr = auth.getPasswordAuthentication().getUserName();
        this.passwort = auth.getPasswordAuthentication().getPassword();

        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.port", port);
        props.put("mail.smtp.host", smtpServer);
        props.put("mail.smtp.auth", authen);

        Session session = Session.getDefaultInstance(props, auth);

        Message message = new MimeMessage(session);

        empfaenger = username + "@web.de";
        try {
            message.setFrom(new InternetAddress(this.emailAdr, benutzer));
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(
                    empfaenger));
            message.setSubject("Vorl\u00E4ufige Best\u00E4tigung ihres Seminarthemas");
            message.setText(nachricht);
            message.setSentDate(new Date());
            message.saveChanges();

            Transport transport = session.getTransport("smtp");
            if (null != smtpServer && null != this.emailAdr
                    && null != this.passwort && this.emailAdr.contains("@")) {
                transport.connect(smtpServer, this.emailAdr, this.passwort);
                transport.sendMessage(message, message.getAllRecipients());
                transport.close();
            }
        } catch (AddressException e) {
            logger.error(e);
        } catch (MessagingException e) {
            logger.error(e);
        } catch (UnsupportedEncodingException e) {
            logger.error(e);
        }
    }

und wenn ich die Methode im Controller erweitere mit
Java:
                    else if(art.equals("reserviert")&& student!= null && thema != null){
                    	email.sendProvisionalConfirmationMail(student,thema);
                    }
 
@TO
du hast aber schon mal was davon gehört das wenn man ein problem hat dieses auch beschreiben muss ... weil genau das fehlt irgendwie

ich kann bei dir keine frage erkennen, oder irgendeinanzeichen von fehlern, oder sonst irgendwas zu dem man dir irgendwie hilfe geben könnte (vielleicht zum code selbst ... aber egal)

wenn du also ein konkretes problem hast oder fehler bekommst ... dann poste es auch bitte ... weil mit dem was du bisher gepostet hast kann keiner was anfangen, geschweige denn erahnen warum du diesen thread erstellt hast

aber mal so drüber geflogen

1: mailConfig()
was macht diese methode ? warum callst du sie ? verändert sie irgendwelche (auch nicht geposteten) klassen-member ?
bitte posten, sowie alle klassen-member die dazu gehören

2: EMailAuthenticator
bitte auch diese klasse posten

3: der ganze e-mail-krams
also ich weis zwar nicht wo du den schrott her hast ... aber hier mal eine saubere erklärung : E-Mails mit JavaMail versenden @ tutorials.de: Tutorial, Anleitung & Hilfe

4: grundsätzliches hintergrund-wissen
java-mail braucht grundsätzlich e-mail-server
an einer uni ist es so das diese meist einen stehen haben um einerseits die interne kommunikation zu regeln als auch natürlich nach außen hin ein gutes bild zu liefern
du solltest lieber diesen nutzen anstatt die privat-e-mail-adressen der dozenten preis zu geben, denn genau dafür haben unis ihre eigenen mail-server

5: jsp ? ahh ... es geht also um code der auf einem app-server läuft ... na noch besser ... vor allem wenns der uni-server selbst ist auf dem auch der mail-server läuft ... dann sollten sich andere libs die dann auf den lokalen mail-server zugreifen deutlich besser machen als java-mail ... so in richtung postfix oder sendmail ...
 

Neue Themen


Zurück
Oben