0

最近、私のプロジェクトの 2 つの異なるスレッド内で、毎日の自動メール送信者と毎週のメールに取り組んでいます。

メール サーバーは MS Exchange です (バージョンは覚えていません)。

毎日のメールだけが実行されていたとき、私のメールは問題なく送信されました。ウィークリー メールに別のスレッドを追加したので、次のような問題がいくつかあります。

  • スレッドの 1 つだけがメールを送信できます (両方ではありません)。
  • どのスレッドも電子メールを送信できません

ログにはエラーの形跡はありません。smtp サーバーへの接続に問題はなく、メールは送信されているようですが、メールボックスを確認するとメールがまったく届きません。

私のメールクラスに関するコードを投稿します

public class Email {

boolean debug = false ;
String smtpServer = null;
int smtpPort = null;
String smtpSender = null;
String smtpUser = null;
String smtpPassword = null;


public Email(){
        smtpServer = Config.SMTP_SERVER;
        smtpPort = Config.SMTP_PORT;
        smtpSender = Config.SMTP_SENDER;
        smtpUser = Config.SMTP_USER;
        smtpPassword = Config.SMTP_PASSWORD;
}



public void postMailAttach( String recipients[], String subject, String message, String filename ) throws MessagingException {


Properties props = new Properties();
    props.put("mail.smtp.auth", "true"); 

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


       //SET SERVER FOR MESSAGE
       Message msg = new MimeMessage(session);
       msg.setFrom(new InternetAddress(smtpSender));



       InternetAddress[] toAddress = new InternetAddress[recipients.length];

       for (int i = 0; i < recipients.length; i++){
         toAddress[i] = new InternetAddress(recipients[i]);
       }

       //SET RECIPIENTS FOR MESSAGE
       msg.setRecipients(Message.RecipientType.TO, toAddress);    
       //SET SUBJECT
       msg.setSubject(subject);

       //SET BODY PART OF MESSAGE 
       BodyPart messageBodyPart = new MimeBodyPart();
       messageBodyPart.setText(message);

       Multipart multipart = new MimeMultipart();
       multipart.addBodyPart(messageBodyPart);
       messageBodyPart = new MimeBodyPart();

       //GET FILES TO ATTACH
       DataSource source = new FileDataSource(filename);
       messageBodyPart.setDataHandler(new DataHandler(source));
       //SET FILE NAME
       messageBodyPart.setFileName(filename);

       multipart.addBodyPart(messageBodyPart);
       msg.setContent(multipart);

        //SEND THE EMAIL
        Transport transport = session.getTransport("smtp");    
        transport.connect(smtpServer,smtpPort,smtpUser,smtpPassword);    
        transport.sendMessage(msg,msg.getAllRecipients());    
        transport.close();        

}

public void postMail (String recipients[], String subject, String message) throws MessagingException{

    //Set the host smtp address
Properties props = new Properties();
props.put("mail.smtp.auth", "true"); 


// create some properties and get the default Session
Session session = Session.getDefaultInstance(props, null);
//session.setDebug(debug);

// create a message
Message msg = new MimeMessage(session);

// set the from and to address
InternetAddress addressFrom = new InternetAddress(smtpSender);
msg.setFrom(addressFrom);

InternetAddress[] addressTo = new InternetAddress[recipients.length];
for (int i = 0; i < recipients.length; i++) {
    addressTo[i] = new InternetAddress(recipients[i]);
}
msg.setRecipients(Message.RecipientType.TO, addressTo);


// Optional : You can also set your custom headers in the Email if you Want
//msg.addHeader("MyHeaderName", "myHeaderValue");

// Setting the Subject and Content Type
msg.setSubject(subject);
msg.setContent(message, "text/plain");
    Transport transport = session.getTransport("smtp");    
    transport.connect(smtpServer,smtpPort,smtpUser,smtpPassword);    
    transport.sendMessage(msg,msg.getAllRecipients());    
    transport.close();        


}

アドバイスありがとうございます。

4

1 に答える 1