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

Odpowiedz Nowy wątek
2006-07-23 22:18
mati2006
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ć?

Pozostało 580 znaków

2006-07-23 22:37
0

Klasa Session powinna pochodzić z pakietu javax.mail


Pozostało 580 znaków

2006-07-23 22:45
mati2006
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ł?

Pozostało 580 znaków

2006-07-24 15:18
mati2006
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?

Pozostało 580 znaków

2006-07-24 18:05
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);

Pozostało 580 znaków

2006-07-27 19:19
edd101
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("[email protected]"),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ć???

Pozostało 580 znaków

2006-07-27 21:48
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 - Ł


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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