0

1 つは Imap を使用して電子メールを受信するためのもので、もう 1 つは SMTP を使用して電子メールを送信するためのものです。メール送信アクティビティのボタンはメール受信アクティビティ内にあるため、メール受信アクティビティはメール送信アクティビティの前に実行する必要があります。

私の問題は、次のように言って例外が発生 Could not connect to SMTP host: localhost, port: 25し続けることですTransport.send(new_message)

ただし、最初にメール受信アクティビティを呼び出さずに同じアクティビティを実行すると、問題なく動作します。なぜこれが起こるのか、誰かが私を助けることができますか?

これは、RecieveEmail Async タスクのコードです (完全なアクティビティ コードは長すぎます)。

 try{


               Properties props = new Properties();
               props.setProperty( "mail.imaps.socketFactory.class", "com.X509TrustAll.DummySSLSocketFactory" );
               Log.v("EmailList", "Stting properties");

              // Get the default Session object.
              session = Session.getDefaultInstance(props, null);
              Log.v("EmailList", "Geting Default Instance");

              // Get a Store object that implements the specified protocol.
              store = session.getStore("imaps");
              Log.v("EmailList", "Getting Sesion");

              //Connect to the current host using the specified username and password.
              Log.v("EmailList", "Connecting...");
              store.connect(host,port, user, password);
              Log.v("EmailList", "Connected");

              //Create a Folder object corresponding to the given name.
              Folder[] folders = store.getDefaultFolder().list("*");
              Log.v("EmailList", "Got Folder List");
              folder =  folders[5];



              // Open the Folder.
              Log.v("EmailList", "Opening Folder");
              folder.open(Folder.READ_ONLY);

              Log.v("EmailList", "Getting Messages");
              messages = folder.getMessages();

              Log.v("EmailList", "Got Messages");


          } catch (Exception e){

              Log.v("EmailList", "Exception");

          }
        }

              for (int i = lastMessageNumber -1;  i >= interateUpto; i--) {

                  Log.v("EmailRecieve", "Email no. " + Integer.toString(i));

                  javax.mail.Address[] froms = messages[i].getFrom();
                  String emailAdress = froms == null ? null : ((InternetAddress) froms[0]).getAddress();


                  FromAsync.add(emailAdress);

                  SubjectAsync.add(messages[i].getSubject());

                  SentDateAsync.add(messages[i].getSentDate().toString());


                  Part part = messages[i];

                  checkAttachments(part);



                  if (messages[i].isSet(Flag.SEEN)){

                      SeenAsync.add("true");

                  }else{

                      SeenAsync.add("false");

                  }


              }



              lastMessageNumber = lastMessageNumber - 19;   //new last number is stored

              folder.close(false);
              store.close();

        } catch (Exception e){

                  Log.v("EmailList", "Exception");

        }



      Log.v("EmailList", "Retrieve Email Finished");



        return null;

    }

そして、これがSend Emailのコードです(これも完全なコードは長すぎるので、関連するものだけを投稿しています。つまり、UIなどは投稿されていません

@Override
    protected Void doInBackground(Void... arg0) {

        //Recipient's email ID needs to be mentioned.
          String to = To.getText().toString();

          // Sender's email ID needs to be mentioned
          String from = "foobar@foobar.hehe";

          // The Host
          String smtphost = "www.isleworthsyon.hounslow.sch.uk";

          // Get system properties
          Properties smtpproperties = System.getProperties();

          // Setup mail server
          smtpproperties.setProperty("mail.smtp.host", smtphost);

          // Get the default Session object.
          Session smtpsession = Session.getDefaultInstance(smtpproperties);

          try{
             MimeMessage new_message = new MimeMessage(smtpsession);

             // Set From:
             new_message.setFrom(new InternetAddress(from));

             // Set To:
             new_message.addRecipient(Message.RecipientType.TO,
                                      new InternetAddress(to));

             // Set Subject: 
             new_message.setSubject(Subject.getText().toString());

             if (hasAttachment == true){

                 // Create the message part 
                 BodyPart messageBodyPart = new MimeBodyPart();

                 // Fill the message
                 messageBodyPart.setText(Body.getText().toString());

                 // Create a multipar message
                 Multipart multipart = new MimeMultipart();

                 // Set text message part
                 multipart.addBodyPart(messageBodyPart);

                 // Iterating over all Attachments    
                 for (int i=0; i < attachmentFiles.size(); i++){

                    if (attachmentFiles.get(i).equals("null") != true)    {

                         messageBodyPart = new MimeBodyPart();
                         String filename = attachmentFiles.get(i);
                         FileDataSource source = new FileDataSource(filename);
                         messageBodyPart.setDataHandler(new DataHandler(source));
                         messageBodyPart.setFileName(source.getName());
                         multipart.addBodyPart(messageBodyPart);

                    }
                 }


                 new_message.setContent(multipart);

             }else{

                 // Set Body if not attaching anything
                 new_message.setText(Body.getText().toString());

             }

             // Send message
             Transport.send(new_message);
             sendingSuccesfull = true;
          }catch (MessagingException mex) {
             sendingSuccesfull = false;
             Log.v("Email Compose", "Message Sending Failed, Details: " + mex.getMessage());

          }

        return null;
    }
4

1 に答える 1

1

これらのよくある間違いを片付けて、問題が解決するかどうかを確認してください。

于 2012-08-30T18:17:41.560 に答える