2015-11-19 2 views
0

Я получаю следующую ошибку при отправке электронной почты из корпоративного Outlook с использованием java mail API.Соединение отказано: connect - Java mail API

javax.mail.MessagingException: Could not connect to SMTP host:  smtp.mycompany.net.au, port: 25; 
nested exception is: 
java.net.ConnectException: Connection refused: connect 

Я могу телнет сервер с тем же портом мой machine.What может быть основной причиной этого вопроса?

Код, используемый для отправки электронной почты является -

Properties props = new Properties(); 
props.put("mail.smtp.auth", "true"); 
props.put("mail.smtp.starttls.enable", "true"); 
props.put("mail.smtp.host", mysmtpserver); 
props.put("mail.smtp.port", myport); 

Session session = Session.getInstance(props, 
      new javax.mail.Authenticator() { 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication(username, password); 
      } 
      }); 

Message message = new MimeMessage(session); 
message.setFrom(new InternetAddress(fromEmailAddress)); 

message.setRecipients(Message.RecipientType.BCC, addressTo); 
message.setSubject(emailSubject); 

BodyPart messageBodyPart = new MimeBodyPart(); 
messageBodyPart.setHeader("Content-Type", "text/html;charset=UTF-8"); 
messageBodyPart.setHeader("Content-Transfer-Encoding", "quoted-printable"); 
messageBodyPart.setContent(emailBody, "text/html;charset=UTF-8"); 

Multipart multipart = new MimeMultipart(); 
//part 1-add html part 
multipart.addBodyPart(messageBodyPart); 
messageBodyPart = new MimeBodyPart(); 
String filename = reportFilePath.trim(); 
DataSource source = new FileDataSource(filename); 
messageBodyPart.setDataHandler(new DataHandler(source));      
messageBodyPart.setFileName(filename);     
multipart.addBodyPart(messageBodyPart); 

Оценил любую помощь в решении его.

Благодаря Либин

+0

Это означает, что ваш порт открыт, но он отказывается от соединения –

+0

Просто чтобы быть ясно, что вы используете телнет на той же машине, что ваше приложение JavaMail выполняется на, и вы подключаетесь к порту 25 на smtp.mycompany.net.au, правильно? Получаете ли вы сообщение SMTP-приветствия с сервера? –

+0

Можете ли вы показать нам код, чтобы понять, где вы делаете ошибку. Возможно, вы не задаете свойства точно – Ghayel

ответ

0

java.net.ConnectException: Соединение отклонено: подключение ошибка бросками из-за следующих причин, по которым вы должны проверить:

  1. Ваше имя хоста или порта
  2. Ваш свойства кода точно написано
  3. Убедитесь, что брандмауэр не блокирует порт
  4. Укажите пароль, если на вашем сервере это необходимо

Благодарим за предоставление вашего кода. Просьба применить следующий код. Его очень легко понять и прекрасно работает. 100% испытанное

import java.io.*; 
import java.util.*; 
import javax.mail.*; 
import javax.mail.internet.*; 
import javax.mail.event.*;  
import java.net.*; 
import javax.activation.*; 

public class SendEmail extends ConfigProperties{ 

     public static void send(String from, String to, String subject, String content) throws AddressException, MessagingException{ 

     ErrorCheck ec = new ErrorCheck(); 
     String error = ""; 

     try{ 
      error = ec.error(); 

      String smtp = getPropVal("SMTP"); 
      String host = getPropVal("HOST"); 

      Properties props=new Properties(); 
       props.put(smtp,host); 
      Session session1 = Session.getDefaultInstance(props,null); 
      Message msg =new MimeMessage(session1); 

      msg.setHeader("Content-Type", "text/plain; charset=UTF-8"); 
      msg.setHeader("Content-Transfer-Encoding", "quoted-printable");   

       msg.setFrom(new InternetAddress(from)); 
        msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to,false)); 
       msg.setSubject(subject); 
       msg.setContent(content,"text/html; charset=UTF-8");  

       Transport.send(msg); 

      }catch(Exception e){ 
      ec.errorMsg(error+"SendEmail.send()", e); 
      } 
     } 
} 
Смежные вопросы