2011-12-17 126 views
0

我想發送一個電子郵件與我的Android應用程序的附件作爲附件。我跟着這篇文章(其中有很多):Sending email with attachment through GMailSender?使用GMailSender從Android應用程序發送電子郵件附件失敗Transport.send

所以我做了同樣的事情,我可以發送電子郵件,但只有沒有附件。不幸的是,Transport.send似乎失敗了。過了一會兒,它表明:

D/SntpClient(61): request time failed: java.net.SocketException: Address family not supported by protocol 

我試圖創建以不同的方式File對象(streamUri我相信這是正確的):

Uri streamUri = intent.getParcelableExtra(Intent.EXTRA_STREAM); 
File f = new File(streamUri.toString()); //I get an error if I pass only streamUri as parameter 

File f = new File(streamUri.getEncodedPath()); 

,但我得到:

( 418): IOException while sending message 
( 418): javax.mail.MessagingException: IOException while sending message; 
( 418): nested exception is: 
( 418): java.io.FileNotFoundException: /media/external/images/media/2 (No such file or directory) 

所以我懷疑我可能會錯誤地創建File對象。

回答

1

的路徑是不正確的,這解決了這一問題:

public String getRealPathFromURI(Uri contentUri) { 
    String[] proj = { MediaStore.Images.Media.DATA }; 
    Cursor cursor = managedQuery(contentUri, proj, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 
相關問題