2013-07-29 1 views
0

J'utilise Windows 8 x86 et jdk_7. Le code ci-dessous se complique parfaitement sans erreur. Quand je lance il me donne cette exception:Comment résoudre le transfert FTP java 7 dans Windows 8

javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25; 
    nested exception is: 
java.net.SocketException: Permission denied: connect 

Maintenant, comme solution de contournement, j'ai essayé d'ajouter cette ligne:

System.setProperty("java.net.preferIPv4Stack", "true"); 

Cela n'a pas résolu le problème, et après les heures de recherches sur internet , j'ai remarqué que le problème est avec le jdk_7 et les problèmes de pare-feu. J'ai même essayé cette commande

netsh advfirewall set global StatefulFTP disable 

cela ne pourrait pas résoudre le problème non plus.

import java.util.*; 
import javax.mail.*; 
import javax.mail.internet.*; 
import javax.activation.*; 

public class SendFileEmail 
{ 
    public static void main(String [] args) 
    { 
    System.setProperty("java.net.preferIPv4Stack", "true"); 
    // Recipient's email ID needs to be mentioned. 
    String to = "[email protected]"; 

    // Sender's email ID needs to be mentioned 
    String from = "[email protected]"; 

    // Assuming you are sending email from localhost 
    String host = "localhost"; 

    // Get system properties 
    Properties properties = System.getProperties(); 

    // Setup mail server 
    properties.setProperty("mail.smtp.host", host); 

    // Get the default Session object. 
    Session session = Session.getDefaultInstance(properties); 

    try{ 
    // Create a default MimeMessage object. 
     MimeMessage message = new MimeMessage(session); 

    // Set From: header field of the header. 
     message.setFrom(new InternetAddress(from)); 

    // Set To: header field of the header. 
     message.addRecipient(Message.RecipientType.TO, 
           new InternetAddress(to)); 

    // Set Subject: header field 
     message.setSubject("This is the Subject Line!"); 

    // Create the message part 
     BodyPart messageBodyPart = new MimeBodyPart(); 

    // Fill the message 
     messageBodyPart.setText("This is message body"); 

    // Create a multipar message 
     Multipart multipart = new MimeMultipart(); 

    // Set text message part 
     multipart.addBodyPart(messageBodyPart); 

    // Part two is attachment 
     messageBodyPart = new MimeBodyPart(); 
     String filename = "shh.jpg"; 
     DataSource source = new FileDataSource(filename); 
     messageBodyPart.setDataHandler(new DataHandler(source)); 
     messageBodyPart.setFileName(filename); 
     multipart.addBodyPart(messageBodyPart); 

    // Send the complete message parts 
     message.setContent(multipart); 

    // Send message 
     Transport.send(message); 
     System.out.println("Sent message successfully...."); 
    } 
     catch (MessagingException mex) { 
      mex.printStackTrace(); 
     } 
    } 
} 
+0

Tant que vous n'exécutez pas de serveur SMTP sur localhost, cela ne fonctionnera pas. – mthmulders

Répondre

1
// Assuming you are sending email from localhost 
String host = "localhost"; 
// Setup mail server 
properties.setProperty("mail.smtp.host", host); 

La façon dont je lis votre code et votre erreur, il semble plus que vous essayez d'envoyer de localhost comme hôte, où vous êtes en fait d'essayer d'envoyer à un serveur de messagerie à localhost sur le port 25. Si aucun serveur SMTP n'est exécuté sur localhost, vous obtiendrez l'erreur ci-dessus. Le code que vous avez fourni ne démarrera aucun serveur SMTP pour vous. Vous devriez probablement remplacer host = "localhost" avec ce que votre hôte smtp est (et éventuellement d'autres paramètres en fonction des besoins de votre fournisseur smtp).

+0

Merci pour cela. Je l'ai fait mais maintenant je reçois l'exception: 'com.sun.mail.smtp.SMTPSendFailedException: 451 délai de connexion de relais SMTP' –

+0

C'est pire cependant. Au moins, cela indique que votre connexion passe par votre serveur SMTP. Se pourrait-il que votre fournisseur ne vous permette pas de relayer des messages à travers leur serveur. C'était comme ça pour moi, mais après avoir contacté mon FAI et obtenu un identifiant pour le serveur de messagerie, ils m'ont permis d'envoyer des e-mails avec d'autres adresses d'expéditeur que ce à quoi ils s'attendaient. Voir aussi si l'aide suivante (recherche 451). [link] (http://www.answersthatwork.com/Download_Area/ATW_Library/Networking/Network__3-SMTP_Server_Status_Codes_and_SMTP_Error_Codes.pdf) – DanielBarbarian