wysyłanie maila z appletu przez Socket

0

Witam, mój problem polega na tym, że nie wiedzieć czemu funkcja nie wysyła maila (kod jest podobny do tego zawartego w CORE JAVA 2). chciałbym aby wysyłała ona maile, na podany mój adres. Może chodzi o to że w konstruktorze Socket`a podaje błędnego stringa?? a może w aplecie nie ma prawa działaćtakie coś??

public void send(String a) throws IOException
	{out.print(a.replaceAll("\n","\r\n" ));
	out.print("\r\n");
	 out.flush();
	}
	
	
	public void sendMail(String jeden, String dwa){
		try{
			String hostName= InetAddress.getLocalHost().getHostName();
			

		Socket s= new Socket("[email protected]", 25);
		InputStream inStream = s.getInputStream();
		OutputStream outStream = s.getOutputStream();
		
                in = new Scanner(inStream);
		out = new PrintWriter(outStream, true);
		
		receive();
		send("HELO "+hostName);
		receive();
		send("MAIL FROM:<"+"[email protected]"+">");
		receive();
		send("RCPT TO:<"+"[email protected]"+">");
		receive();
		send("DATA");
		receive();
		send(jeden);
		receive();
		send(dwa);
		send(".");
		receive();
		send("QUIT");
		
		s.close();
		} catch(IOException e)
		{}
	}
0
  1. Czy pojawia się błąd. Jak tak to jaki?
  2. Czy aplet jest podpisany.
  3. Dlaczego używasz soketów, a nie Java Mail API, które ma znacznie przyjaźniejsze hm... API.
  4. Czy aplet znajdue się na tym samym serwerze (domenie), z którym się łączysz.
0

Chodzi o to żeby aplet wysyłał maila do Ciebie, czy żeby wysyłał korzystając z określonej metody ? Jeśli to pierwsze, to napisałem swego czasu aplet, który wysyła maila korzystając z domyślnego w systemie programu pocztowego. Przewaga tego rozwiązania nad znacznikiem mailto:... jest taka, że adres odbiorcy jest ukryty. Działa, mimo że aplet jest niepodpisany.

0

wydaje mi się, że adres chosta powinien być "smtp.wp.pl" - udało się połączyć telnetem na porcie 25:)
poza tym wp.pl wymaga autoryzacji, czyli trzeba skorzystać z "SMTP Service Extension for Authentication" a nie czystego smtp (jak ma to miejsce w Twoim listingu) - troche inne komendy, podaje się użytkownika i hasło (gdzieś tam się przewija hasz MD5) w dokumentacji RFC można wyczytać o tym (+wiki) - ja niestety nie znam szczegółów. Jak już Ci się uda to możesz umieścić listing bo sam jestem ciekawy :)

0

Witam , a ja mam podobne pytanie korzystam z Java API ale przychodzi mi wiadomosc ze musze uwierzytelnic wiadoamosc, co robic???

Properties props = new Properties();
    props.put("mail.smtp.host", "poczta.o2.pl");
    props.put("mail.from", "[email protected]");
    
    Session session = Session.getInstance(props, null);
    try{


    }catch(Exception e){
        e.printStackTrace();
    }
    try {
        MimeMessage msg = new MimeMessage(session);
 
        msg.setFrom();
        msg.setRecipients(Message.RecipientType.TO,
                          "[email protected]");
        msg.setSubject("JavaMail hello world example");
        msg.setSentDate(new Date());
        msg.setText("Hello, world!\n");
           
        Transport.send(msg);
    } catch (Exception mex) {
        System.out.println("send failed, exception: " + mex);
    } 
0

chodzi o to żeby wysyłał do mnie maila. jakieś jeszcze propozycje??

0

Jesteś jeszcze zainteresowany tym zagadnieniem ?
Napisałem swego czasu programik (nie aplet), który rozsyłał wiadomości pocztowe korzystając z pakietu javax.mail. Trochę trwała reanimacja programu - przestał działać po zmianach w konfiguracji serwera pocztowego (zmiany te to zwiększenie bezpieczeństwa).
pozdrawiam

0

@b_toudi, przy pomocy pakietu javax.mail nie da się wysłać poczty z (niepodpisanego) apletu (java.lang.SecurityException)
@miro007, w ramach wspomnianej reanimacji zrobiłem dwie zmiany związane z uwierzytalnianiem:

    session=Session.getDefaultInstance(nadawca,new Autentyfikator());
    props.put("mail.smtp.auth", true);
    // klasa Autentyfikator:
import javax.mail.*;

public class Autentyfikator extends Authenticator
{
    public PasswordAuthentication getPasswordAuthentication()
    {
        String user=....
        String passwd=.....
        return new PasswordAuthentication(user,passwd);
    }
}
0
bogdans napisał(a)

@miro007, w ramach wspomnianej reanimacji zrobiłem dwie zmiany związane z uwierzytalnianiem:

    session=Session.getDefaultInstance(nadawca,new Autentyfikator());
    props.put("mail.smtp.auth", true);
    // klasa Autentyfikator:
import javax.mail.*;

To żeby zadziałało poprawnie to jedna poprawka:

   props.put("mail.smtp.auth", "true");
0

@bresio Dzięki za poprawkę, pisałem z pamięci. W kodzie mam

  props.put("mail.smtp.auth", "true");

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