【问题标题】:How to attach database file to an Email in android?如何将数据库文件附加到android中的电子邮件?
【发布时间】:2014-08-02 21:56:16
【问题描述】:

您好,我正在尝试通过附加数据库文件来发送电子邮件,我收到的邮件没有附加,这是我的代码。 谁能帮我..? 试试{

                    String host = "smtp.gmail.com";
                    String from = "abc@.com";
                    String pass = "aaaaadd";
                    Properties props = System.getProperties();
                    props.put("mail.smtp.starttls.enable", "true"); // added this line
                    props.put("mail.smtp.host", host);
                    props.put("mail.smtp.user", from);
                    props.put("mail.smtp.password", pass);
                    props.put("mail.smtp.port", "587");
                    props.put("mail.smtp.auth", "true");

                    String[] to = {"to@mail.com"}; // added this line

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

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

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

                    // To get the array of addresses
                    for( int i=0; i < to.length; i++ ) { 
                        toAddress[i] = new InternetAddress(to[i]);
                    }


                    for( int i=0; i < toAddress.length; i++) {
                        message.addRecipient(Message.RecipientType.TO, toAddress[i]);
                    }

                    message.setSubject("sending in a group");
                    message.setText("Welcome to JavaMail");//The exception is thrown here   


                    FileDataSource fds = new FileDataSource(new File("/data/data/packagename/databases/dbname.txt"));
                    //fds.getFile();
                    Log.v("File name is",  fds.getFile().toString());
                    Log.v("File size is", fds.getContentType());
                    message.setDataHandler(new DataHandler(fds));

                    message.setFileName("Callist.db");          
                    message.setDisposition(Part.ATTACHMENT);


                    Transport transport = session.getTransport("smtp");
                    transport.connect(host, from, pass);
                    transport.sendMessage(message, message.getAllRecipients());

                    transport.close();
                     Toast.makeText(getApplicationContext(), "E mail Sent", Toast.LENGTH_SHORT).show();

             } 
             catch(Exception e){
                 Toast.makeText(getApplicationContext(), " .."+e.toString(), Toast.LENGTH_LONG).show();
                              }


        } 

【问题讨论】:

    标签: android email attachment


    【解决方案1】:

    电子邮件程序无法访问您的应用程序的私人文件,在这种情况下,是您尝试发送的数据库。将数据库复制到 SD 卡中的文件夹并从那里附加。

    【讨论】:

      【解决方案2】:

      您可以使用以下代码将文件复制到 SDCard:

      File sd = Environment.getExternalStorageDirectory();
      File data = Environment.getDataDirectory();
      if (sd.canWrite()) {
          String currentDBPath = "\\data\\application.package\\databases\\name";
          String backupDBPath = "name";
          File currentDB = new File(data, currentDBPath);
          File backupDB = new File(sd, backupDBPath);
          if (currentDB.exists()) {
              FileChannel src;
          try {
          src = new FileInputStream(currentDB).getChannel();
              FileChannel dst = new FileOutputStream(backupDB).getChannel();
              try {
              dst.transferFrom(src, 0, src.size());
          src.close();
                  dst.close();
              } catch (IOException e) {                                                    
                  e.printStackTrace();
              }
          } catch (FileNotFoundException e) {
          e.printStackTrace();
          }
      

      记得添加以下权限:android:name="android.permission.WRITE_EXTERNAL_STORAGE"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多