2017-02-27 3 views
0

私は問題があると私はメールを送信する必要があり、varがからメールを送信する必要があり、その後1である場合、SMTPサーバは、 1つのVARに依存私のプログラムでは、いくつかの助けJavaMailのは、2台のSMTPサーバ

を必要とするからメッセージを送信しますGmailのアドレス またはvarが2の場合、メールは別のsmtpサーバーから送信されます

私は両方のアカウントからTLSを使用していますが、すべてがOKです(1台のサーバーからのみ送信します)...しかし、両方から送信しようとすると私のvarの変更は実行中に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

common JavaMail mistakesのJavaMail FAQリストを参照してください。 Session.getDefaultInstanceをSession.getInstanceに変更します。

関連する問題