How to attach database file to an Email in android?

冷暖自知 提交于 2019-12-30 14:29:56

问题


HI I am trying to send an email by attaching a database fie, i am getting mail without attaching the fallowing is my code. can any one help me..? try{

                    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();
                              }


        } 

回答1:


The email program can't access your application's private files, in this case, the database you are trying to send. Copy the database to a folder in the SD card and attach it from there.




回答2:


You can copy the file to the SDCard using the following code:

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();
    }

Remember to add the following permission: android:name="android.permission.WRITE_EXTERNAL_STORAGE"



来源:https://stackoverflow.com/questions/5906703/how-to-attach-database-file-to-an-email-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!