2017-02-27 81 views
0

我有一个问题,需要一些帮助JAVAMAIL从2个SMTP服务器

在我的计划,我需要发送邮件和SMTP服务器取决于一个变种, 如果var为1,则必须从发送邮件发送消息Gmail地址 或者如果var是2,邮件是从不同的smtp服务器发送的

我从这两个帐户使用TLS并且一切正常(如果仅从1个服务器发送)......但是当我尝试从两个服务器(因为我的变化取决于1到2,或执行期间多次2到1)我总是收到一个错误

在这里我的代码:

public static void correo(String empresa, String[] dest, String archivo, String nom_arch){ 
    String cuenta = "", asunto = "", pw = "", pto = "", server = ""; 
    try 
    { 
     Properties props = new Properties(); 

     if("1".equals(empresa)){ 
      cuenta = "[email protected]"; 
      asunto = "xxxxxxx"; 
      pw = "password"; 
      pto = "587"; 
      server = "smtp.gmail.com"; 
     } 
     else if ("2".equals(empresa)) { 
      cuenta = "[email protected]"; 
      asunto = "yyyyyyy"; 
      pw = "password"; 
      pto = "25"; 
      server = "smtpout.secureserver.net"; 
     } 

     props.setProperty("mail.smtp.host", server); 
     props.setProperty("mail.smtp.port", pto); 
     props.setProperty("mail.smtp.user", cuenta); 
     props.setProperty("mail.smtp.auth", "true"); 
     props.setProperty("mail.smtp.starttls.enable", "true"); 

     Session session = Session.getDefaultInstance(props,null); 

     BodyPart texto = new MimeBodyPart(); 
     texto.setText("Some Text"); 

     BodyPart adjuntoPDF = new MimeBodyPart(); 
     adjuntoPDF.setDataHandler(new DataHandler(new FileDataSource(archivo+".pdf"))); 
     adjuntoPDF.setFileName(nom_arch+".pdf"); 

     MimeMultipart multiparte = new MimeMultipart(); 
     multiparte.addBodyPart(texto); 
     multiparte.addBodyPart(adjuntoPDF); 

     MimeMessage message = new MimeMessage(session); 
     message.setFrom(new InternetAddress(cuenta)); 

     InternetAddress[] direcciones = new InternetAddress[dest.length]; 
     for(int i=0; i<dest.length; i++){ 
      direcciones[i] = new InternetAddress(dest[i]); 
     } 
     message.addRecipients(Message.RecipientType.TO,direcciones); 
     message.setSubject(asunto); 
     message.setContent(multiparte); 

     Transport t = session.getTransport("smtp"); 
     t.connect(cuenta, pw); 
     t.sendMessage(message, message.getAllRecipients()); 

     t.close(); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

回答

0

查看此JavaMail常见问题列表common JavaMail mistakes。将Session.getDefaultInstance更改为Session.getInstance。