Mail senden per GMail SMTP

Moin zusammen.

Ich versuche über folgenden Code eine E-Mail über den GMail-SMTP-Server zu senden:

	{
		Config config = confHandler.buildConfig();
		final String username = config.getMailUsername();
		final String password = config.getMailPassword();
		
		Properties props = new Properties();
		props.put("mail.smtp.auth", "true");
		props.put("mail.smtp.starttls.enable", "true");
		props.put("mail.smtp.host", "smtp.gmail.com");
		props.put("mail.smtp.port",  "587");
		
		Session session = Session.getInstance(props, new javax.mail.Authenticator() {
			protected PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication(username, password);
			}
		});
		
		try
		{
			Message message = new MimeMessage(session);
			message.setFrom(new InternetAddress("test@googlemail.com"));
			message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("test@gmx.de"));
			message.setSubject("Testing Message");
			message.setText("Test Text");
			
			Transport.send(message);
			
			logger.writeLogEntry("Message successfully delivered to" + message.getFrom().toString());
		}
		catch(MessagingException mex)
		{
			logger.writeLogEntry(mex.getMessage());
		}
	}```

Bekomme im Log immer die Fehlermeldung: Couldn't connect to host, port: smtp.gmail.com, 456; timeout -1

Hab schon verschiedene Sachen probiert, vielleicht könnt ihr mir weiterhelfen.

Da stimmt was mit dem Port nicht gem. deiner Fehlermeldung!?

Ah, mom, da hatte ich nen anderen Port probiert bei der Meldung, gleiche Fehlermeldung tritt natürlich auch bei Port 587 auf, wie er im Quellcode steht.

Hallo Orothred,

http://www.patshaping.de/hilfen_ta/pop3_smtp.htm

Probier es mal mit den Port: 465 (und nicht 456)

EDIT: Ist der SMTP-Zugriff für deinen Account auch aktiviert?

MfG
hansmueller

Gleicher Fehler.

SMTP muss aktiviert sein für meinen Account, da ich über ein Powershell-Script erfolgreich Mails senden kann.

/edit: Ich werds mal heut Abend noch von zu Hause probieren, am Ende haut irgendwas im Firmennetzwerk dazwischen. Weiß auch grad nicht mehr, obs damals mit dem Powershell-Script innerhalb des Firmennetzwerks lief…

Vermutlich wird der ausgehende Port durch die Firewall geblockt. Hatte das selbe Problem. Von zu Hause wird es dann mit Sicherheit funktionieren.

Hmm wir hatten eine solche Frage vor einiger Zeit im JFO, kann mich aber gerade nicht mehr daran erinnern, was da der Outcome war…

http://www.tutorials.de/content/1177-e-mails-mit-javamail-versenden.html

gestern vor 2 jahren mal geschrieben

einige anmerkungen :

  1. nimm bitte den Authenticater weg, den braucht man für SSLv2, für SSLv3/TLSv1 ist dieser nicht mehr nötig

  2. leider nicht im tut erwähnt, aber : der DOC kann man entnehmen das die static methode Transport.send(Message) ihre eigene session nutzt
    vorher also über die Session ein zugehöriges Transport objekt holen und auf dieses dann die non-static methode Transport.send(Message, Address[]) callen

  3. ja, ich weis, es wird mir eh keiner glauben, aber das tut ist wirklich von mir …

Problem hat sich erledigt, lag wohl wirklich irgendwo an der Firmenfirewall, von zu Hause geht die Mail einwandfrei durch.

Danke für die Hinweise und Tipps :slight_smile: