j2me / BlackBerry - Как отправить письмо с приложением из приложения? - PullRequest
2 голосов
/ 08 апреля 2010

эй, я создаю приложение, в котором пользователь может отправить электронное письмо человеку.Пользователь вводит идентификатор электронной почты человека, которому электронная почта должна быть отправлена, в поле «Редактировать», а затем нажимает кнопку «Отправить», электронная почта должна быть доставлена ​​с вложением.

как я могу это сделать ??????

Я действительно запутался после поиска в Google.может кто-нибудь сказать мне точный способ

также, я не могу отправить электронное письмо с симулятора, если мой файл трески без знака

заранее спасибо

Ответы [ 2 ]

2 голосов
/ 08 апреля 2010

Попробуйте это.

     Address[] address = new Address[1];
                    try {
                        address[0] = new Address(email,name);
                    } catch (AddressException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                    byte[] data = readFile();
                    Multipart multipart = new Multipart();
                    SupportedAttachmentPart attach = new SupportedAttachmentPart(multipart,
                            "application/x-example", "test.txt", data);
                    multipart.addBodyPart(attach);
                    Message msg = new Message();
                    // add the recipient list to the message
                    try {
                        msg.addRecipients(Message.RecipientType.TO, address);
                         // set a subject for the message
                        msg.setSubject("Mail from mobile");
                        msg.setContent(multipart);
                    } catch (MessagingException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }


                    try {
                        Transport.send(msg);
                    } catch (MessagingException e) {
                        System.out.println(e.getMessage());
                    }
private static byte[] readFile() {
    String fName ="file:///store/home/user/test.txt";
    byte[] data = null;
    FileConnection fconn = null;
    DataInputStream is = null;
    try {
            fconn = (FileConnection) Connector.open(fName, Connector.READ_WRITE);
            is = fconn.openDataInputStream();             
            data = IOUtilities.streamToBytes(is);
    } catch (IOException e) {
            System.out.println(e.getMessage());
    } finally {
            try {
                    if (null != is)

                            is.close();
                    if (null != fconn)
                            fconn.close();
            } catch (IOException e) {
                    System.out.println(e.getMessage());
            }
    }
    return data;
}
0 голосов
/ 09 апреля 2010

Вот рабочий пример создания нового электронного письма и представления его на рассмотрение перед отправкой из моего проекта BBSSH.Диалог / всплывающее окно вам не нужно и может удалить.В этом примере мы берем растровое изображение в качестве аргумента и преобразуем его в PNG, который мы прикрепляем к письму.Другой тип контента будет прикреплен аналогично.

Вы можете делать что угодно с симулятором, если код не подписан;однако я думаю, что электронные письма на самом деле не будут отправлены, так как сам симулятор не имеет связи с реальным почтовым сервером.

/**
  * Sends feedback, optionally including the provided bitmap as an attachement.
  *
  * it is the caller's responsibility to ensure that this is invoked
  * in a properly synchronized manner.
  *
  * @param screenshot - if not null, this function prompts
  * the user to include the screenshot as an attachment. 
  */
 public static void sendFeedback(Bitmap screenshot) {
  ResourceBundle b = ResourceBundle.getBundle(BBSSHRResource.BUNDLE_ID,
    BBSSHRResource.BUNDLE_NAME);
  try {
   Multipart mp = new Multipart();
   Message msg = new Message();
   Address[] addresses = {new Address("recipient@example.com", "Recipient Name")};
   if (screenshot == null || Dialog.ask(Dialog.D_YES_NO,
     b.getString(BBSSHRResource.MSG_FEEDBACK_INCLUDE_SCREENSHOT), Dialog.YES) == Dialog.NO) {
   } else {
    PNGEncodedImage img = PNGEncodedImage.encode(screenshot);
    SupportedAttachmentPart pt = new SupportedAttachmentPart(mp, img.getMIMEType(),
      "bbssh-screen.png", img.getData());
    mp.addBodyPart(pt);
    msg.setContent(mp);
   }
   msg.addRecipients(RecipientType.TO, addresses);
   msg.setSubject("BBSSH Feedback");
   Invoke.invokeApplication(Invoke.APP_TYPE_MESSAGES, new MessageArguments(msg));
  } catch (AddressException ex) {
   Logger.getLogger().log(10, "Unable to send feedback: " + ex.getMessage());
  } catch (MessagingException ex) {
   Logger.getLogger().log(10, "Unable to send feedback: " + ex.getMessage());
  }

 }

Если вы хотите отправить сообщение вместо того, чтобы подавать его на рассмотрение вместо Invoke.invokeApplication, вы должны использовать Transport.send (msg);

...