Oppure

Loading
14/02/08 8:41
rospo
ciao a tutti!
nuovo problema per un niubbo di java 8-|
sto cercando, sempre x quel programmino per cui chiedevo dei frame, di far si che l'utente possa mandare una mail all'autore.
ora, ho letto un po di documenti in giro e ne viene fuori che tramite javax.mail dovrebbe essere abbastanza semplice...
dovrebbe, perchè io non riesco a trovare l'errore!
questo è il codice che sto testando

package perjoomla;

import java.util.*;
import java.net.*;
import java.io.*;

public class InvioMail {

    static BufferedReader in;
    static PrintWriter out;
    static String server = "mail.tin.it";
    static String mittente = "mittente@bo.it";
    static String destinatario = "destinatario@bo.it";
    static String messaggio = "ciao";

    public static void main(String[] args) {
        try {
            Socket s = new Socket(server, 25);
            out = new PrintWriter(s.getOutputStream());
            in = new BufferedReader(new InputStreamReader(s.getInputStream()));

            String hostName = InetAddress.getLocalHost().getHostName();

            receive();
            send("HELO " + hostName);
            receive();
            send("MAIL FROM: <" + mittente + ">");
            receive();
            send("RCPT TO: <" + destinatario + ">");
            receive();
            send("DATA");
            receive();
            StringTokenizer tokenizer = new StringTokenizer(messaggio, "\n");
            while (tokenizer.hasMoreTokens()) {
                send(tokenizer.nextToken());
            }
            send(".");
            receive();
            s.close();
        } catch (IOException exception) {
            System.out.println("Error: " + exception);
        }
    }

    public static void send(String s) throws IOException {
        System.out.println(s);
        System.out.println("\n");
        out.print(s);
        out.print("\r\n");
        out.flush();
    }

    public static void receive() throws IOException {
        String line = in.readLine();
        if (line != null) {
            System.out.println(line);
            System.out.println("\n");
        }
    }
}

e mi viene detto, nella guida, che l'unica osservazione da fare è che il server deve essere il server smtp con il quale ci si connette a internet.
ora, io mi connetto tramite tin.it, ho ricercato l'smtp e l'ho settato.
lancio l'applicazione e alla fine esce questo OK.
ora, perchè non arriva però la mail?
devo fare un discorso di autentificazione anche sull'utente?
come posso semplificare il tutto, visto che poi andrà a degli utenti che non potranno modificare il codice?
io pensavo di fare un file .txt che si allega all'eseguibile nel quale l'utente scrive il suo smtp, mail del mittente (il destinatario è fissa nel programma) e, se necessari, user e password per la mail del mittente.
è fattibile?
io adesso provo a vedere un attimo questo discorso del file, ma quello della mail sono 3 gg che mi ci sto sbattendo la testa!
letto da mokabyte, cercato qui, su google e letti tanti articoli, ma tutti i codici non vanno!
ho scaricato i 2 pacchetti per la gestione della mail e li ho inseriti nel programma!
chi mi può dare 1 mano?
grazie grazie!
Ultima modifica effettuata da rospo 15/02/08 15:45
aaa
14/02/08 9:04
rospo
per la lettura del file nessun problema: l'avevo già fatta ed è tutto a posto :D
rimane il problema della mail, adesso mi rimetto a leggere qualcos'altro, ma se avete qualche consiglio è ben accetto :D
aaa
14/02/08 10:09
rospo
sembra che ho risolto...
import javax.mail.*;
import javax.mail.internet.*;

import java.util.Properties;

class SendMail {
    public static void main(String[] args) throws Exception{
        System.out.println("son qui");
      Properties props = new Properties();
      props.setProperty("mail.transport.protocol", "smtp");
      props.setProperty("mail.host", "mail.tin.it");
      props.setProperty("mail.user", "userdellaconnessione");
      props.setProperty("mail.password", "passworddellaconessione");

      Session mailSession = Session.getDefaultInstance(props, null);
      Transport transport = mailSession.getTransport();

      MimeMessage message = new MimeMessage(mailSession);
      message.setSubject("Testing javamail plain");
      
      message.setContent("This is a test", "text/plain");
      message.addRecipient(Message.RecipientType.TO, new InternetAddress("destinatario@bo.it"));
      message.setFrom(new InternetAddress("mittente@bo.it"));

      transport.connect();
      transport.sendMessage(message,
          message.getRecipients(Message.RecipientType.TO));
      transport.close();
    }
}

x sicurezza, mi ci date un occhiata e mi dite se vi sembra funzionante e senza bug?
soprattutto, è adattabile a tutti i server?
perchè non so con chi si connetteranno gli utenti finali...
con tin.it funziona;)
Ultima modifica effettuata da rospo 15/02/08 15:46
aaa