DaveDarell
Grünschnabel
Hallo zusammen,
ich habe folgendes Problem:
Ich will eine Permutation erstellen (2 Ziehungen, Zahlen 1 bis 9). Vorne soll 1 bis 9 durchlaufend nummeriert werden und nach einem Bindestrich die beiden "Ergebnisse" der Permutation ausgegeben werden. Beispielsweise soll das dann so aussehen:
1 - 2 3
2 - 1 1
3 - 4 5
...
Anschließend soll eine E-Mail verschickt werden. Person 1 erhält im Text die Nachricht Hallo xy,
du hast Person 2 und 3 gezogen. Person 2 ... du hast Person 1 und 1 gezogen...
Habe folgende Codes:
Permutation:
Und für die E-Mail:
Habe noch zusätzlich die .jar Dateien javaxmail und Activation Framework hinzugefügt.
Bekomme bei der Code-Zeile
Session session = Session.getDefaultInstance(properties, auth);
die Fehlermeldung:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method getDefaultInstance(Properties, Authenticator) in the type Session is not applicable for the arguments (Properties, SendMailExample.MailAuthenticator)
at SendMailExample.sendMail(SendMailExample.java:37)
at SendMailExample.main(SendMailExample.java:117)
Habe am ursprünglichen Code nichts geändert außer in der Main-Methode meine Angaben inkl. Passwort eingetragen.
Kann mir eventuell jemand weiterhelfen wie ich das Problem voll lösen kann?
Vorab vielen Dank!
LG
ich habe folgendes Problem:
Ich will eine Permutation erstellen (2 Ziehungen, Zahlen 1 bis 9). Vorne soll 1 bis 9 durchlaufend nummeriert werden und nach einem Bindestrich die beiden "Ergebnisse" der Permutation ausgegeben werden. Beispielsweise soll das dann so aussehen:
1 - 2 3
2 - 1 1
3 - 4 5
...
Anschließend soll eine E-Mail verschickt werden. Person 1 erhält im Text die Nachricht Hallo xy,
du hast Person 2 und 3 gezogen. Person 2 ... du hast Person 1 und 1 gezogen...
Habe folgende Codes:
Permutation:
Java:
// Java implementation of the approach
import java.util.*;
import java.lang.Math;
class GfG
{
// Function to return the next random number
static int getNum(ArrayList<Integer> v)
{
// Size of the vector
int n = v.size();
// Make sure the number is within
// the index range
int index = (int)(Math.random() * n);
// Get random number from the vector
int num = v.get(index);
// Remove the number from the vector
v.set(index, v.get(n - 1));
v.remove(n - 1);
// Return the removed number
return num;
}
// Function to generate n
// non-repeating random numbers
static void generateRandom(int n)
{
//number of the name
int name = 1;
ArrayList<Integer> v = new ArrayList<>(n);
// Fill the vector with the values
// 1, 2, 3, ..., n
for (int j = 0; j<2; j++) {
for (int i = 0; i < n; i++)
v.add(i + 1);
// While vector has elements
// get a random number from the vector and print it
while (v.size() > 0)
{
System.out.print(name + " - " + getNum(v) + "\t");
name = 1+name;
// System.out.print(getNum(v)+ " ");
}
j = j+1;
}
}
// Driver code
public static void main(String []args)
{
int n = 9;
System.out.println("Erste Ziehung");
generateRandom(n);
System.out.println("\n" + "Zweite Ziehung");
generateRandom(n);
}
}
Und für die E-Mail:
Java:
import java.io.ObjectInputStream.GetField;
import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
* @author zeja
*/
public class SendMailExample {
public void sendMail(String smtpHost,String username,String password,String senderAddress,String recipientsAddress,String subject,String text ){
MailAuthenticator auth = new MailAuthenticator(username, password);
Properties properties = new Properties();
// Den Properties wird die ServerAdresse hinzugefügt
properties.put("mail.smtp.host", smtpHost);
// !!Wichtig!! Falls der SMTP-Server eine Authentifizierung
// verlangt
// muss an dieser Stelle die Property auf "true" gesetzt
// werden
properties.put("mail.smtp.auth", "true");
// Hier wird mit den Properties und dem implements Contructor
// erzeugten
// MailAuthenticator eine Session erzeugt
Session session = Session.getDefaultInstance(properties, auth);
try {
// Eine neue Message erzeugen
Message msg = new MimeMessage(session);
// Hier werden die Absender- und Empfängeradressen gesetzt
msg.setFrom(new InternetAddress(senderAddress));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(
recipientsAddress, false));
// Der Betreff und Body der Message werden gesetzt
msg.setSubject(subject);
msg.setText(text);
// Hier lassen sich HEADER-Informationen hinzufügen
msg.setHeader("Test", "Test");
msg.setSentDate(new Date( ));
// Zum Schluss wird die Mail natürlich noch verschickt
Transport.send(msg);
}
catch (Exception e) {
e.printStackTrace( );
}
}
class MailAuthenticator extends Authenticator {
/**
* Ein String, der den Usernamen nach der Erzeugung eines
* Objektes<br>
* dieser Klasse enthalten wird.
*/
private final String user;
/**
* Ein String, der das Passwort nach der Erzeugung eines
* Objektes<br>
* dieser Klasse enthalten wird.
*/
private final String password;
// /**
// * Der Konstruktor erzeugt ein MailAuthenticator Objekt<br>
// * aus den beiden Parametern user und passwort.
// *
// * @param user
// * String, der Username fuer den Mailaccount.
// * @param password
// * String, das Passwort fuer den Mailaccount.
// */
public MailAuthenticator(String user, String password) {
this.user = user;
this.password = password;
}
/**
* Diese Methode gibt ein neues PasswortAuthentication
* Objekt zurueck.
*
* @see javax.mail.Authenticator#getPasswordAuthentication()
*/
// protected PasswordAuthentication getPasswordAuthentication() {
// return new PasswordAuthentication(this.user, this.password);
// }
}
public static void main(String[] args) {
String username = "dstm11";
String password = "";
String senderAddress = "dstm11@web.de";//someone@web.de
String recipientsAddress = "david-mutschler@web.de"; //somereceiver@web.de
String subject = "Test";
String text = "Hallo David, " + "\n" + "hier kommt ein Test." ;
String smtpHost = "smtp.web.de";
new SendMailExample().sendMail(smtpHost, username, password, senderAddress, recipientsAddress, subject, text);
}
}
Habe noch zusätzlich die .jar Dateien javaxmail und Activation Framework hinzugefügt.
Bekomme bei der Code-Zeile
Session session = Session.getDefaultInstance(properties, auth);
die Fehlermeldung:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method getDefaultInstance(Properties, Authenticator) in the type Session is not applicable for the arguments (Properties, SendMailExample.MailAuthenticator)
at SendMailExample.sendMail(SendMailExample.java:37)
at SendMailExample.main(SendMailExample.java:117)
Habe am ursprünglichen Code nichts geändert außer in der Main-Methode meine Angaben inkl. Passwort eingetragen.
Kann mir eventuell jemand weiterhelfen wie ich das Problem voll lösen kann?
Vorab vielen Dank!
LG
Zuletzt bearbeitet: