Wie kopiere ich den Text einer json Datei und füge diesen in eine E-Mail ein mit Java?
Ich habe hier eine Java Datei die auf eine andere zugreift welche sich mit den Gmail Servern verbindet... . Jetzt wollte ich gerne das beim ausführen, der text einer json Datei in der Email eingefügt wird. Mir wäre es egal ob die Datei als Anhang oder als Text auftaucht.
package Datei;
public class StartMailSender {
public static void main(String[] args) {
String username = "Email";
String password = "Passwort";
MailSender sender = new MailSender();
sender.login("smtp.gmail.com", "465", username, password);
try {
sender.send("Email-absender", "Name", "Email Empfänger", "Datei", (Text der aus der json Datei)
);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Ich würde gerne den text einer json Datei kopieren und als E-Mail Text verschicken.
Andernfalls könnte die Datei auch im Anhang verschickt werden
Nur leider weiß ich nicht wie ich den Text bei einer E-Mail einfügen kann.
Hat sich jemand damit schon auseinander gesetzt.
Mit Freundlichen grüßen
Tim
2 Antworten
Option a)
Du nutzt die GMail API. Direkt nach dem Quickstart wäre dieser Guide für dich von Interesse.
Option b)
Du verwendest die Java Mail API. Einen Artikel dazu findest du hier.
Ich habe jetzt nur ein Teil des Programmes reingeschickt welches ich dazu nutze.
Der zweite Teil sieht wie folgt aus.
package Datei;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class MailSender {
protected Session mailSession;
public void login(String smtpHost, String smtpPort, String username, String password) {
Properties props = new Properties();
props.put("mail.smtp.host", smtpHost);
props.put("mail.smtp.socketFactory.port", smtpPort);
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", smtpPort);
Authenticator auth = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
};
this.mailSession = Session.getDefaultInstance(props, auth);
System.out.println("Eingeloggt.");
}
public void send(String senderMail, String senderName, String receiverAddresses, String subject, String message)
throws MessagingException, IllegalStateException, UnsupportedEncodingException {
if (mailSession == null) {
throw new IllegalStateException("Du musst dich zuerst einloggen (login()-Methode)");
}
MimeMessage msg = new MimeMessage(mailSession);
msg.addHeader("Content-type", "text/HTML; charset=UTF-8");
msg.addHeader("format", "flowed");
msg.addHeader("Content-Transfer-Encoding", "8bit");
msg.setFrom(new InternetAddress(senderMail, senderName));
msg.setReplyTo(InternetAddress.parse(senderMail, false));
msg.setSubject(subject, "UTF-8");
msg.setText(message, "UTF-8");
msg.setSentDate(new Date());
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(receiverAddresses, false));
System.out.println("Versende E-Mail...");
Transport.send(msg);
System.out.println("E-Mail versendet.");
}
}
Das ist der zweite Teil des Programmes.
Aber ich würde Option a auch nicht schlecht finden, ich versuche es mal.
Wo liegt denn der Inhalt der json-Datei? Ist der auch als Datei abgelegt oder kommt er als Parameter mit? Oder völlig anders?
Dann musst Du lediglich die Datei einlesen und das eingelesene an die Mail-Funktion übergeben. Mit dem Mailversand hat das herzlich wenig zu tun, du musst überhaupt erstmal an die Daten kommen. Hier ein Beispiel von vielen wie man mit Java Dateien lesen könnte:
https://javabeginners.de/Ein-_und_Ausgabe/Eine_Datei_zeilenweise_auslesen.php
Ich bin jetzt nicht so gut mit Java vertraut.
Die json Datei habe ich noch nicht angegeben, da ich nicht genau wusste wie ich diesen in die E-Mail einbringen soll.
Die json Datei soll z.B auf Laufwerk C liegen und würde dann als Parameter gespeichert werden und in der E-Mail nachricht abgefragt werden.