Java 如何在android应用程序中通过邮件发送附件?
嗨,我正在通过android应用程序发送邮件。我在我的应用程序中导入邮件库和激活库 当我发送邮件时,邮件已成功发送,但附件未发送。有谁能告诉我怎么才能把它也寄出去 这是我的密码:Java 如何在android应用程序中通过邮件发送附件?,java,android,sendmail,attachment,email-attachments,Java,Android,Sendmail,Attachment,Email Attachments,嗨,我正在通过android应用程序发送邮件。我在我的应用程序中导入邮件库和激活库 当我发送邮件时,邮件已成功发送,但附件未发送。有谁能告诉我怎么才能把它也寄出去 这是我的密码: public synchronized void sendMail(String body, String recipients) throws Exception { try{ MimeMessage message = new MimeMessage(session);
public synchronized void sendMail(String body, String recipients) throws Exception {
try{
MimeMessage message = new MimeMessage(session);
DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain"));
message.setSender(new InternetAddress("shankar.uclid@gmail.com"));
message.setSubject("Request For Claim");
MimeBodyPart messageBodyPart2=new MimeBodyPart(); // creating new MimeBodyPart object and setting DataHandler to this object
String filename="file:///android_asset/code.js"; //you can change according to your choice
DataSource source=new FileDataSource(filename);
messageBodyPart2.setDataHandler(new DataHandler(source));
messageBodyPart2.setFileName(filename);
Multipart multipart=new MimeMultipart();
multipart.addBodyPart(messageBodyPart2);
message.setContent(multipart);
message.setDataHandler(handler);
showLog("recepetent is "+recipients);
if (recipients.indexOf(',') < 0)
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("shankar.uclid@gmail.com"));
else
message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
Transport.send(message);
}catch(Exception e){
e.printStackTrace();
}
}
public synchronized void sendMail(字符串正文、字符串收件人)引发异常{
试一试{
MimeMessage message=新MimeMessage(会话);
DataHandler=新的DataHandler(新的ByteArrayDataSource(body.getBytes(),“text/plain”);
message.setSender(新的互联网地址(“shankar。uclid@gmail.com"));
message.setSubject(“索赔请求”);
MimeBodyPart messageBodyPart2=新的MimeBodyPart();//创建新的MimeBodyPart对象并将DataHandler设置为此对象
字符串文件名=”file:///android_asset/code.js“;//您可以根据自己的选择进行更改
DataSource source=新文件DataSource(文件名);
messageBodyPart2.setDataHandler(新的DataHandler(源));
messageBodyPart2.setFileName(文件名);
Multipart Multipart=新的MimeMultipart();
multipart.addBodyPart(messageBodyPart2);
message.setContent(多部分);
message.setDataHandler(handler);
showLog(“收件人为”+收件人);
if(recipients.indexOf(',')<0)
message.setRecipients(message.RecipientType.TO,InternetAddress.parse。uclid@gmail.com"));
其他的
message.setRecipient(message.RecipientType.TO,新的InternetAddress(recipients));
传输。发送(消息);
}捕获(例外e){
e、 printStackTrace();
}
}
我不知道为什么我的附件没有得到
谢谢你试试这个方法,希望这能帮助你解决问题。
public static void email(Context context, String to, String cc,String subject, String body, List<String> files)
{
//need to "send multiple" to get more than one attachment
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("text/plain");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
new String[]{to});
emailIntent.putExtra(android.content.Intent.EXTRA_CC,
new String[]{cc});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, body);
//has to be an ArrayList
ArrayList<Uri> uris = new ArrayList<Uri>();
//convert from paths to Android friendly Parcelable Uri's
for (String file : files)
{
File fileIn = new File(file);
Uri u = Uri.fromFile(fileIn);
uris.add(u);
}
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
context.startActivity(Intent.createChooser(emailIntent, "Send mail..."));
}
公共静态无效电子邮件(上下文上下文、字符串收件人、字符串抄送、字符串主题、字符串正文、列表文件)
{
//需要“发送多个”才能获取多个附件
最终意图emailIntent=新意图(android.content.Intent.ACTION\u SEND\u MULTIPLE);
emailIntent.setType(“文本/普通”);
emailIntent.putExtra(android.content.Intent.EXTRA_电子邮件,
新字符串[]{to});
emailIntent.putExtra(android.content.Intent.EXTRA_CC,
新字符串[]{cc});
emailIntent.putExtra(Intent.EXTRA_SUBJECT,SUBJECT);
emailIntent.putExtra(Intent.EXTRA_文本,正文);
//必须是ArrayList
ArrayList URI=新的ArrayList();
//从路径转换为Android友好的包裹Uri
用于(字符串文件:文件)
{
File fileIn=新文件(File);
uriu=Uri.fromFile(fileIn);
添加(u);
}
emailIntent.putParcelableArrayListExtra(Intent.EXTRA\u流,URI);
context.startActivity(Intent.createChooser(emailIntent,“发送邮件…”);
}
参见此处也参见此处这些链接未使用mail.jar、activation.jar。我想直接通过代码而不是任何提取。没有人,我想附加文件。