2015-05-23 5 views
1

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

код создания файла:

newFile = new File("/sdcard/" + TEMPFILENAME); 
if (newFile.exists()) { 
    newFile.delete(); 
} 
newFile.createNewFile(); 
for (int j = 0; j < arrayList.size(); j++) { 
    writeFileToStorage(TEMPFILENAME, arrayList.get(j).AccountName, arrayList.get(j).UserName, encryptString(arrayList.get(j).Password)); 
} 
recipient = emailEdit.getText().toString(); 
new EmailSender().execute(); 

тогда в моем почтовой службе класса I имеет следующие

MimeMessage message = new MimeMessage(session); 
MimeMultipart multipart = new MimeMultipart(); 
BodyPart messageBodyPart = new MimeBodyPart(); 
DataSource source = new FileDataSource(file.getAbsolutePath()); 
DataHandler handler = new DataHandler(source); 

message.setSender(new InternetAddress(sender)); 
message.setSubject(subject); 
message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient)); 

messageBodyPart.setDataHandler(handler); 
messageBodyPart.setFileName(file.getName()); 
multipart.addBodyPart(messageBodyPart); 

message.setContent(multipart); 
Transport.send(message); 

файл послан с правильным именем и от правильного получателя/отправителя, но файл всегда пуст.

Любые идеи?

Edit:

Реализация writeFileToStorage, которая работает в приложении регулярно при сохранении данных

try { 
    bufferedWriter = new BufferedWriter(new OutputStreamWriter(openFileOutput(fName, MODE_APPEND))); 
    bufferedWriter.write(aName); 
    bufferedWriter.newLine(); 
    bufferedWriter.write(_uName); 
    bufferedWriter.newLine(); 
    bufferedWriter.write(_pWord); 
    bufferedWriter.newLine(); 
    bufferedWriter.close(); 
    Log.d("Wrote: ", ("AccountName: "+ aName + " UserName: " + _uName + " Password: " + _pWord+ " to: " + fName)); 
} catch (Exception err) { 
    String writeError = getString(R.string.write_error); 
    Toast.makeText(getBaseContext(), writeError, Toast.LENGTH_SHORT).show(); 
} 
+0

Показать реализацию: 'writeFileToStorage' –

+1

Вы * закрываете * файл? – 323go

+1

Никогда не устанавливайте корневые пути жесткого кода. Всегда используйте методы для получения каталогов верхнего уровня в Android. Следовательно, используйте 'getFilesDir()', 'getExternalFilesDir()' и т. Д. Кроме того, никогда не используйте конкатенацию для создания пути к файлу. Используйте конструктор 'File', который принимает корневой каталог (как' File') и имя файла, который вы хотите в этом каталоге. Кроме того, пожалуйста, не загромождайте внешнее хранилище пользователя своими файлами. И вы не передаете 'File' в' writeFileToStorage() ', и поэтому никто не знает, где вы пишете эти данные. – CommonsWare

ответ

0

Было бы интересно, как вы написали writeFileToStorage(...) метод.

После звонка newFile.createNewFile(); ваш newFile не получится обработать.

Редактировать: Ваш writeFileToStorage(...) Способ не работает. Неверный параметр fname.

+0

fName передается как TEMPFILENAME, и он правильно передает его, потому что вложение, отправленное по электронной почте, имеет правильное имя – ski6154

Смежные вопросы