2010-10-02 4 views
1

J'ai utilisé le code suivant pour envoyer du courrier dans un domaine.comment envoyer des e-mails via outlook depuis java

public void sendMail(String mailServer, String from, String to, 
      String subject, String messageBody, String[] attachments) 
      throws MessagingException, AddressException { 
     // Setup mail server 
     Properties props = System.getProperties(); 
     props.put("mail.smtp.host", mailServer); 

     // Get a mail session 
     Session session = Session.getDefaultInstance(props, null); 

     // Define a new mail message 
     Message message = new MimeMessage(session); 
     message.setFrom(new InternetAddress(from)); 
     message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); 
     message.setSubject(subject); 

     // Create a message part to represent the body text 
     BodyPart messageBodyPart = new MimeBodyPart(); 
     messageBodyPart.setText(messageBody); 

     // use a MimeMultipart as we need to handle the file attachments 
     Multipart multipart = new MimeMultipart(); 

     // add the message body to the mime message 
     multipart.addBodyPart(messageBodyPart); 

     // add any file attachments to the message 
     addAtachments(attachments, multipart); 

     // Put all message parts in the message 
     message.setContent(multipart); 

     // Send the message 
     Transport.send(message); 
     System.err.println("Message Send"); 

    } 

    protected void addAtachments(String[] attachments, Multipart multipart) 
      throws MessagingException, AddressException { 
     for (int i = 0; i < attachments.length ; i++) { 
      String filename = attachments[i]; 
      MimeBodyPart attachmentBodyPart = new MimeBodyPart(); 

      // use a JAF FileDataSource as it does MIME type detection 
      DataSource source = new FileDataSource(filename); 
      attachmentBodyPart.setDataHandler(new DataHandler(source)); 

      // assume that the filename you want to send is the same as the 
      // actual file name - could alter this to remove the file path 
      attachmentBodyPart.setFileName(filename); 

      // add the attachment 
      multipart.addBodyPart(attachmentBodyPart); 
     } 
    } 

mais si avec le même code que je tente d'envoyer un e-mail en dehors du domaine, dire que je vous envoie de courriel [email protected] à mhsharma @ gmail, com il échoue et me donne l'erreur suivante. 550 5.7.1 Rcpt command failed: Mail denied due to site's policy

Ai-je manqué quelque chose dans le code ci-dessus. S'il vous plaît aidez-moi

+0

L'envoyez-vous de votre environnement de travail? Je suppose qu'ils ont bloqué Google Mail. –

Répondre

1

Je suppose que ce n'est pas un problème dans votre code, mais dans votre configuration de serveur de messagerie (sendmail?). Je voudrais parler à quiconque administre votre infrastructure de messagerie.

0

Il est probable que votre serveur de messagerie local vous demande de vous authentifier avant d'envoyer le courrier dans le monde. Ceci est une politique commune pour prévenir les spammeurs de relaying their mail à travers elle.

0

En supposant que votre machine a Outlook installé ... avez-vous essayé d'utiliser le connecteur Java de moyosoft? il est assez simple à utiliser et passe à travers les restrictions réseau car il se connecte à votre application Outlook et envoie le courrier, donc toute restriction sur les ports SMTP ou les politiques serveur/proxy seront ignorées si votre client Outlook fonctionne correctement. Si vous le faites avec la ligne de commande côté serveur alors je suppose que cette réponse est inutile pour vous. Source: J'ai eu un problème similaire (pas le même code d'erreur, plus comme une restriction intranet) et l'utilisation de cette bibliothèque a résolu mon problème en raison de la posté ci-dessus.

Questions connexes