2016-12-27 2 views
0

Я пытаюсь создать приложение для Android android, в котором я хочу получить доступ к внутреннему хранилищу (где хранится файл .db или .db.crypt), и оттуда я хочу получить этот файл и отправил его по электронной почте. ниже мой код, где все работает нормально. Я могу получить этот файл и отправить его. но предположим, что мое исходное имя файла «file1.db», но после отправки его через smtp он получает как «file1», который является всего лишь файлом. любой идеи? PLZ сказать мне, как я могу отправить этот файл db ???android smtp с приложением файла db

import android.app.ProgressDialog; 
import android.content.Context; 
import android.os.AsyncTask; 
import android.os.Environment; 
import android.widget.Toast; 

import java.io.File; 
import java.util.Properties; 

import javax.activation.DataHandler; 
import javax.activation.DataSource; 
import javax.activation.FileDataSource; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.Multipart; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeBodyPart; 
import javax.mail.internet.MimeMessage; 
import javax.mail.internet.MimeMultipart; 

//Class is extending AsyncTask because this class is going to perform a networking operation 
public class SendMail extends AsyncTask<Void,Void,Void> { 
//Declaring Variables 
private Context context; 
private Session session; 

//Information to send email 
private String email; 
private String subject; 
private String message; 

//Progressdialog to show while sending email 
private ProgressDialog progressDialog; 

//Class Constructor 
public SendMail(Context context, String email, String subject, String message){ 
    //Initializing variables 
    this.context = context; 
    this.email = email; 
    this.subject = subject; 
    this.message = message; 
} 

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    //Showing progress dialog while sending email 
    progressDialog = ProgressDialog.show(context,"Sending message","Please wait...",false,false); 
} 

@Override 
protected void onPostExecute(Void aVoid) { 
    super.onPostExecute(aVoid); 
    //Dismissing the progress dialog 
    progressDialog.dismiss(); 
    //Showing a success message 
    Toast.makeText(context,"Message Sent",Toast.LENGTH_LONG).show(); 
} 

@Override 
protected Void doInBackground(Void... params) { 
    //Creating properties 
    Properties props = new Properties(); 

    //Configuring properties for gmail 
    //If you are not using gmail you may need to change the values 
    props.put("mail.smtp.host", "smtp.gmail.com"); 
    props.put("mail.smtp.socketFactory.port", "465"); 
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.port", "465"); 

    //Creating a new session 
    session = Session.getDefaultInstance(props, 
      new javax.mail.Authenticator() { 
       //Authenticating the password 
       protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication(Config.EMAIL, Config.PASSWORD); 
       } 
      }); 

    try { 
     //Creating MimeMessage object 
     MimeMessage mm = new MimeMessage(session); 

     //Setting sender address 
     mm.setFrom(new InternetAddress(Config.EMAIL)); 
     //Adding receiver 
     mm.addRecipient(Message.RecipientType.TO, new InternetAddress(email)); 
     //Adding subject 
     mm.setSubject(subject); 
     //Adding message 
     mm.setText(message); 

     Multipart multipart = new MimeMultipart(); 


     MimeBodyPart messageBodyPart = new MimeBodyPart(); 

     DataSource source = new FileDataSource(new File(Environment.getExternalStorageDirectory().getAbsoluteFile()+File.separator+"PasswordSafe.db")); 
     messageBodyPart.setDataHandler(new DataHandler(source)); 
     messageBodyPart.setDisposition(MimeBodyPart.ATTACHMENT); 
     messageBodyPart.setFileName("file1"); 

     multipart.addBodyPart(messageBodyPart); 

     mm.setContent(multipart); 


     //Sending email 
     Transport.send(mm); 

    } catch (MessagingException e) { 
     e.printStackTrace(); 
    } 
    return null; 
}} 
+0

заменить 'messageBodyPart.setFileName ("file1");' 'с messageBodyPart.setFileName ("file1.db");' может помочь вы –

ответ

0

Это будет делать трюк для вас ..

String fileName = name + " yourFile"+".db"; 
Смежные вопросы