[JAVA] [MAIL] Jak wysłać emaila z javy?

0

Witam!
Jak wysłać emaila przez jave? Ja próbue coś takiego:

String host = args[0];
String from = args[1];
String to = args[2];
// Get system properties
Properties props = System.getProperties();
// Setup mail server
props.put("mail.smtp.host", host);
// Get session
Session session = Session.getDefaultInstance(props, null);
// Define message
MimeMessage message = new MimeMessage(session);
// Set the from address
message.setFrom(new InternetAddress(from));
// Set the to address
message.addRecipient(Message.RecipientType.TO, 
new InternetAddress(to));
// Set the subject
message.setSubject("Hello JavaMail");

// Set the content
message.setText("Welcome to JavaMail");
// Send message
Transport.send(message);

Jednak program burzy się już do lini z Session. Proponuje on dodania importu: "import sun.security.pkcs11.Session;" Jednak po dodaniu tego pokazuje że nie ma tych bibliotek. Może ktoś wie jak z tym sobie poradzić?

0

Klasa Session powinna pochodzić z pakietu javax.mail

0

Ściągnąłem ze strony sun-a plik javamail-1_4.zip i dodałem go do projektu i mimo to jest podkreśla na czerwono. Może jeszcze jakiś pomysł?

0

Dodałem import biblioteki: import javax.mail.internet.*;
i teraz wysyła poczte tyle że takie elemnty jak Session, MimeMessage, InternetAddress, Message.RecipientType.TO, Transport są nadal podkreślone na czerwono. Może ktoś wie dlaczego tak się dzieje?

I jeszcze jedno wiecie jak wysłać e-maila z załącznikiem?

0

Ja do wysyłania używałem następujących importów:

Ja do wysyłania używałem następujących importów
import javax.mail.*;
import javax.mail.internet.*;
import java.io.*;
import javax.activation.*;
import java.util.*; 

Fragment kodu maila z załącznikami tworzonymi na podstawie tablicy plików:

BodyPart messageBodyPart = new MimeBodyPart();		
messageBodyPart.setContent(body,contentType);			
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);

if (files != null) {
	for (int i =0; i<files.length; i++) {
		if (files[i].exists()) {
			messageBodyPart = new MimeBodyPart();
			DataSource source = new FileDataSource(files[i]);
			messageBodyPart.setDataHandler(new DataHandler(source));
			messageBodyPart.setFileName(files[i].getName());
			multipart.addBodyPart(messageBodyPart);
		}
	}
}
message.setContent(multipart);
0

Pozwole się podczepić pod tego posta z pytaniem: Jak wysłać wiadomość do wielu osób? Jak dałem to przez pętle for operującą na liście z adresami to już przy 2 adresie sie wysypuje z błędem:
550 Invalid recipient: [email protected]

Doszedłem do czegoś takiego że jak na stałe przypisze adresy tak

InternetAddress[] ao = {new InternetAddress("adrea1@cos"),new InternetAddress("[email protected]")};
message.addRecipients(Message.RecipientType.TO,ao);

to działa. Ale ja chce je pobierac z listy, ze wzgledu na to ze sie zmieniaja. I jak probuje zrobic tak

InternetAddress[] ao = new InternetAddress[2];
ao[0].setAddress("[email protected]");  <==tu sie wali
message.addRecipients(Message.RecipientType.TO,ao);

to mi nie działa. Wywala się na:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at FotoAlbum.WyslijEmail.wyslij(WyslijEmail.java:276)
	at FotoAlbum.WyslijEmail$4.actionPerformed(WyslijEmail.java:438)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

Może wiecie jak temu zaradzić???

0

InternetAddress[] ao = new InternetAddress[2] - tu tworzysz tylko tablicę z pustymi obiektami (null). Po zadeklarowaniu tablicy musisz utworzyć każdy z obiektów ao[0] = new InternetAddress(tu_odpowiednie_parametry_konstruktora).

Szukaj więcej informacji w sieci i nie twórz wielu wiadomości. Własne posty można edytować.

// edytować mogą tylko zarejestrowani użytkownicy - Ł

1 użytkowników online, w tym zalogowanych: 0, gości: 1