我发送带附件的电子邮件!没关系,但有一个问题。我添加到电子邮件正文的文件有“A FULL PATH”的名字。发送像......
class SendEmailAsyncTask extends AsyncTask <Void, Void, Boolean> {
@Override
protected Boolean doInBackground(Void... params) {
{
Context context = getApplicationContext();
Mail m = new Mail("****a@gmail.com", "te****mail");
String[] toArr = {"te****all@yan****"};
m.setTo(toArr);
m.setFrom("t****il.ya@gmail.com");
m.setSubject("TESTING");
m.setBody("Принят test");
try {
String path = "/mnt/sdcard/qwe";
File fileDir = new File( path );
String[] _files = fileDir.list();
for ( int i = 0 ; i < _files.length ; i++ )
{
_files[i] = path + "/"+ _files[i];
// _files[i] = path + "/"+ _files[i].substring(_files[i].lastIndexOf("/"));
m.addAttachment(_files[i]);
Log.v("list sending", _files[i]);
Log.v("list sending", _files[i].substring(_files[i].lastIndexOf("/")));
}
if(m.send()) {
for ( int i = 0 ; i < _files.length ; i++ )
{
Log.v("test mail result", "success");
}
} else {
Log.v("test mail result", "fail");
}
} catch(Exception e) {
Log.v("test mail result", "error while sending");
}
}
return null;
}
}
发送日志是....
02-07 11:18:15.542: V/list sending(18255): /mnt/sdcard/qwe/1233.txt
02-07 11:18:15.542: V/list sending(18255): /1233.txt
02-07 11:18:15.542: V/list sending(18255): /mnt/sdcard/qwe/123.txt
02-07 11:18:15.542: V/list sending(18255): /123.txt
02-07 11:18:15.552: V/list sending(18255): /mnt/sdcard/qwe/12333.txt
02-07 11:18:15.552: V/list sending(18255): /12333.txt
02-07 11:18:15.722: D/dalvikvm(18255): GC_FOR_MALLOC freed 3564 objects / 349496 bytes in 33ms
02-07 11:18:15.722: I/global(18255): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
02-07 11:18:16.222: I/SSLSocketFactory(18255): Using factory org.apache.harmony.xnet.provider.jsse.OpenSSLSocketFactoryImpl@4006ed60
02-07 11:18:17.084: D/NativeCrypto(18255): SSL_OP_NO_SSLv3 is set
02-07 11:18:18.562: I/global(18255): Default buffer size used in BufferedOutputStream constructor. It would be better to be explicit if an 8k buffer is required.
02-07 11:18:18.562: I/global(18255): Default buffer size used in BufferedInputStream constructor. It would be better to be explicit if an 8k buffer is required.
02-07 11:18:19.152: I/global(18255): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
02-07 11:18:27.687: V/test mail result(18255): success
如何在附件中仅获取文件名?
答案 0 :(得分:2)
这是我的addAttachment的样子:
public static void addAttachment(String filename) throws Exception {
BodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
// Truncating the full file path to just filename
Pattern p = Pattern.compile("[^/]*$");
Matcher m = p.matcher(filename);
if (m.find())
messageBodyPart.setFileName(m.group());
else
messageBodyPart.setFileName(filename);
multipart.addBodyPart(messageBodyPart);
}
希望这有帮助!
答案 1 :(得分:1)
我不知道“Mail”类是什么,但看起来这个bug在Mail.addAttachment方法中。
答案 2 :(得分:1)
试试这个:
messageBodyPart.setFileName(filename.substring(filename.lastIndexOf("/") + 1));