Announcement

Collapse
No announcement yet.

Per "mailto" eMail mit Body versenden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Per "mailto" eMail mit Body versenden

    Hallo,

    mit folgendem Code könnte ich eine Email an Empfänger und mit Betreff verschicken :

    Code:
     String emailAddress="[email protected]";
    		String subject = "Mittagspause";
    		String email [] = new String[] { "rundll32", "url.dll,FileProtocolHandler",
    		"mailto:" + emailAddress + "?Subject="+subject};
    		try {
    			Runtime.getRuntime().exec( email );
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    Wie könnte ich den bitte nach dem Codemuster einen beliebigen String in die Mail leiten und verschicken ?
    Ist das überhaupt möglich ?

  • #2
    Das ist eine Frickel-Lösung, weil sie die "mailto"-Funktionalität von Windows benutzt und das damit vebundene Mailkonto.
    Die Lösung ist nicht plattformunabhängig.
    Weiterhin gibt es keine "offizielle" Unterstützung eines "Body"-Feldes in mailto. Das machen die Mailclients wie sie wollen. Eine sichere Versendung einer Mail über diese Funktionalität ist nicht gegeben.

    Benutze dieses JAR
    http://www.oracle.com/technetwork/ja...ail/index.html
    mit der Mail-API und versenden die Mail über SMTP selber.
    Wenn du ein Beispiel benötigst.....
    Christian

    Comment


    • #3
      ah, danke...wäre ja auch zu schön gewesen.... ufff, ein Beispiel wäre sehr, sehr nett

      Comment


      • #4
        [highlight=java]

        public class SendEMail {
        private boolean smtpAuthentication = false;
        private String server = "";
        private String port = "25";
        private String username = "";
        private String passwort = "";
        private String error = "";

        public SendEMail() {
        }

        public SendEMail( String server, String port, String username, String passwort,boolean smtpAuthentication) {
        this.smtpAuthentication = smtpAuthentication;
        this.server = server;
        this.port = port;
        this.username = username;
        this.passwort = passwort;
        }

        public void setServer(String server) {
        this.server = server;
        }

        public void setPort(String port) {
        this.port = port;
        }

        public void setUsername(String username) {
        this.username = username;
        }

        public void setPasswort(String passwort) {
        this.passwort = passwort;
        }

        public void setSmtpAuthentication(boolean smtpAuthentication) {
        this.smtpAuthentication = smtpAuthentication;
        }

        public String getError() {
        return error;
        }

        public boolean sendeEMail(String absender, String recipients, String subject, String body) {
        return sendeEMail(absender, recipients, subject, body, null);
        }

        public boolean sendeEMail(String absender, String recipients, String subject, String body,
        ArrayList <File> dateianhaenge) {
        try {
        error = "";
        Properties prop = System.getProperties();
        prop.put("mail.transport.protocol", "smtp");
        prop.put("mail.smtp.host", server);
        prop.put("mail.smtp.port", port);
        prop.put("mail.smtp.auth", String.valueOf(smtpAuthentication));
        prop.put("mail.user", username);
        prop.put("mail.password", passwort);
        // prop.put("mail.debug","true");
        javax.mail.Session session;
        if (smtpAuthentication) {
        javax.mail.Authenticator auth = new javax.mail.Authenticator() {
        @Override
        public PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, passwort);
        }

        };
        session = Session.getInstance(prop, auth);
        } else {
        session = Session.getInstance(prop);
        }
        MimeMessage mimeMessage = new MimeMessage(session);
        mimeMessage.setFrom(new InternetAddress(absender));
        String[] empf = recipients.split("[;,]");
        for (String adr : empf) {
        mimeMessage.addRecipients(Message.RecipientType.TO , adr.trim());
        }
        mimeMessage.setSubject(subject);
        Multipart multipart = new MimeMultipart();
        BodyPart bodypart = new MimeBodyPart();
        bodypart.setText(body);
        multipart.addBodyPart(bodypart);
        if (dateianhaenge != null) {
        for (File datei : dateianhaenge) {
        if (datei.exists()) {
        MimeBodyPart mimeBodyPart = new MimeBodyPart();
        FileDataSource fileDataSource = new FileDataSource(datei) {
        @Override
        public String getContentType() {
        return "application/octet-stream";
        }
        };
        mimeBodyPart.setDataHandler(new DataHandler(fileDataSource));
        mimeBodyPart.setFileName(fileDataSource.getName()) ;
        multipart.addBodyPart(mimeBodyPart);
        }
        }
        }
        mimeMessage.setContent(multipart);
        mimeMessage.setSentDate(new Date());
        Transport.send(mimeMessage);
        } catch (MessagingException e) {
        error = e.getMessage();
        return false;
        }
        return true;
        }
        }

        [/highlight] Die Dateianhänge sind vom Typ File. Der Proxy verschluckt die eckigen Klammern. Mehrere Empfänger werden mit Komma oder Semikolon getrennt
        Zuletzt editiert von Christian Marquardt; 16.09.2013, 15:37.
        Christian

        Comment

        Working...
        X