2016-09-28 8 views
0

javaを使用してOutlookから電子メールを送信するには、以下のコードを使用しています。しかし、エラーを取得します。java apiを使用してOutlookを使用して電子メールを送信する方法

CODE:

public static void mail(){ 
     // TODO Auto-generated method stub 
     //String host="POKCPEX07.corp.absc.local"; 
     String host="POKCPEX07.corp.absc.local"; 
     final String user="[email protected]"; 
     String to="[email protected]"; 

     //Get the session object 
     Properties props = new Properties(); 
     props.put("mail.smtp.host",host); 
     props.put("mail.smtp.auth", "false"); 
     props.put("mail.smtp.port", "587"); 


     Session session=Session.getInstance(props, 
      new javax.mail.Authenticator() { 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication("[email protected]","******"); 
      } 
      }); 
     session.setDebug(true); 

     try { 
      MimeMessage message = new MimeMessage(session); 
      message.saveChanges(); 
      message.setFrom(new InternetAddress(user)); 
      message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); 
      message.setSubject("Test mail"); 
      message.setText("This is test mail."); 

      //send the message 
      Transport.send(message); 

      System.out.println("message sent successfully..."); 
     } 
     catch (MessagingException e) {e.printStackTrace();} 

    } 
} 

ERROR

を:

 
javax.mail.MessagingException: Could not connect to SMTP host: POKCPEX07.corp.absc.local, port: 587; 
    nested exception is: 
    java.net.SocketException: Permission denied: connect 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1227) 
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:322) 
    at javax.mail.Service.connect(Service.java:258) 
    at javax.mail.Service.connect(Service.java:137) 
    at javax.mail.Service.connect(Service.java:86) 
    at javax.mail.Transport.send0(Transport.java:150) 
    at javax.mail.Transport.send(Transport.java:80) 
    at TestEmail.mail(TestEmail.java:50) 
    at TestEmail.main(TestEmail.java:16) 
上記のコメントで自分が投稿したよう
+0

電子メールサーバーはSMTPプロトコル経由で接続するように構成されていますか? – prabodhprakash

+0

設定されていないと思います。それを達成するためには何が必要でしょうか。 でもGmailの場合でも送信できません。 「許可が拒否されました」というエラーが表示されます。 –

答えて

1
package com.sendmail; 

import java.util.Date; 
import java.util.Properties; 
import javax.mail.Authenticator; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 

public class SendAttachmentInEmail { 


    private static final String SERVIDOR_SMTP = "smtp.office365.com"; 
    private static final int PORTA_SERVIDOR_SMTP = 587; 
    private static final String CONTA_PADRAO = "[email protected]"; //Cofig Mail Id 
    private static final String SENHA_CONTA_PADRAO = "XYZ"; // Password 

    private final String from = "[email protected]"; 
    private final String to = "[email protected]"; 

    private final String subject = "Teste"; 
    private final String messageContent = "Teste de Mensagem"; 

    public void sendEmail() { 
     final Session session = Session.getInstance(this.getEmailProperties(), new Authenticator() { 

      @Override 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication(CONTA_PADRAO, SENHA_CONTA_PADRAO); 
      } 

     }); 

     try { 
      final Message message = new MimeMessage(session); 
      message.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); 
      message.setFrom(new InternetAddress(from)); 
      message.setSubject(subject); 
      message.setText(messageContent); 
      message.setSentDate(new Date()); 
      Transport.send(message); 
     } catch (final MessagingException ex) { 
      System.out.println(" "+ex); 
     } 
    } 

    public Properties getEmailProperties() { 
     final Properties config = new Properties(); 
     config.put("mail.smtp.auth", "true"); 
     config.put("mail.smtp.starttls.enable", "true"); 
     config.put("mail.smtp.host", SERVIDOR_SMTP); 
     config.put("mail.smtp.port", PORTA_SERVIDOR_SMTP); 
     return config; 
    } 

    public static void main(final String[] args) { 
     new SendAttachmentInEmail().sendEmail(); 
    } 

} 
+0

上記のコードスニペットを必要なjarファイルで試してみました。以下のエラーを取得する: スレッド "main"の例外java.lang.RuntimeException:javax.mail.MessagingException:SMTPホストに接続できませんでした:smtp.gmail.com、ポート:587; ネストされた例外は次のとおりです。 \t java.net.SocketExceptionが:アクセス許可が拒否されました:javax.mail.MessagingException:によって引き起こさTestEmail.mainで \t(TestEmail.java:40) を接続するSMTPホストに接続できませんでした:smtp.gmail .com、ポート:587; ネストされた例外は次のとおりです。 \t java.net.SocketExceptionが:アクセス許可が拒否されました: –

+0

変更プロパティ設定を接続します props.put( "mail.smtp.host"、 "smtp.gmail.comを"); 〜 props.put( "mail.smtp.host"、 "outlook.office365.com"); 参照:http://stackoverflow.com/questions/20613569/java-mail-api-send-emails-via-corporate-outlook-acount –

+0

このリンクは正常に動作します。 https://gist.github.com/brunocesarsilva/12a529f7f752f2853b9f –

0

が、それはあなたのSMTPが設定されていないように見えますし、あなたの例外を見ることで - あなたが使用していますgmail。

これに続いて、linkにSMTPを設定します。

関連する問題