2016-09-28 222 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();} 

    } 
} 

错误:

 
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

尝试了上面的代码片段与所需的罐子。获取以下错误: 线程“main”中的异常java.lang.RuntimeException:javax.mail.MessagingException:无法连接到SMTP主机:smtp.gmail.com,端口:587; 嵌套的例外是: \t java.net.SocketException异常:权限被拒绝:连接 \t在TestEmail.main(TestEmail.java:40) 产生的原因:javax.mail.MessagingException的:无法连接到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。

相关问题