在Android中以电子邮件的形式在后台发送多个文件

在Android中以电子邮件的形式在后台发送多个文件,android,email,Android,Email,我有一个文件夹,在该文件夹中有5个文件。我想把这五个文件分别邮寄出去。我可以使用以下代码读取文件: File directory = new File(Environment.getExternalStorageDirectory() + "/folderName"); File[] contents = directory.listFiles(); 对于发送电子邮件,我有电子邮件课程 public class SendAttachment { private String to =

我有一个文件夹,在该文件夹中有5个文件。我想把这五个文件分别邮寄出去。我可以使用以下代码读取文件:

File directory = new File(Environment.getExternalStorageDirectory() + "/folderName");
File[] contents = directory.listFiles();
对于发送电子邮件,我有电子邮件课程

public class SendAttachment {
    private String to = "to@gmail.com";//change accordingly
    private String bcc = "someMail@gmail.com";//change accordingly
    private final String user = "from@gmail.com";//change accordingly
    private final String password = "********";//change accordingly
    private Properties properties;
    private String TAG = SendAttachment.class.getSimpleName();

    public SendAttachment(){
        properties = new Properties();
        properties.put("mail.smtp.host", "smtp.gmail.com"); //SMTP Host
        properties.put("mail.smtp.port", "587"); //TLS Port
        properties.put("mail.smtp.auth", "true"); //enable authentication
        properties.put("mail.smtp.starttls.enable", "true"); //enable STARTTLS
        properties.put("mail.smtp.ssl.trust", "*");
    }

    public String sendEmailNow(String imagepath, Context mContext){

        Authenticator auth = new Authenticator() {
            //override the getPasswordAuthentication method
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(user, password);
            }
        };

        Session session = Session.getInstance(properties, new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(user, password);
            }
        });

        //2) compose message
        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(user));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
          //  message.addRecipient(Message.RecipientType.BCC,new InternetAddress());
            message.setSubject("Doctor mobile: "+"<"+ Helper.getInstance().getStringPref(mContext,"docnum")+">");

            //3) create MimeBodyPart object and set your message text
            BodyPart messageBodyPart1 = new MimeBodyPart();
            messageBodyPart1.setText("Please find attached Rx.");

            //4) create new MimeBodyPart object and set DataHandler object to this object
            MimeBodyPart messageBodyPart2 = new MimeBodyPart();

            String filename = imagepath;//change accordingly
            DataSource source = new FileDataSource(filename);
            messageBodyPart2.setDataHandler(new DataHandler(source));
            messageBodyPart2.setFileName(filename);

            //5) create Multipart object and add MimeBodyPart objects to this object
            Multipart multipart = new MimeMultipart();
            multipart.addBodyPart(messageBodyPart1);
            multipart.addBodyPart(messageBodyPart2);
            //6) set the multiplart object to the message object
            message.setContent(multipart);

            //7) send message
            Transport.send(message);
            deleteFile(imagepath);
            //mContext.startService(new Intent(mContext, CheckImages.class));
            return "success";

        } catch (MessagingException ex) {
            Log.e(TAG, "not sent");
            mContext.startService(new Intent(mContext, CheckImages.class));
            return "failed";
        }

    }

    public boolean deleteFile(String path) {
        File file = new File(path);
        return file.delete();
    }
公共类发送附件{
私有字符串to=”to@gmail.com“;//相应地改变
专用字符串bcc=”someMail@gmail.com“;//相应地改变
私有最终字符串用户=”from@gmail.com“;//相应地改变
私有最终字符串password=“*******”;//相应地更改
私人物业;;
私有字符串标记=SendAttachment.class.getSimpleName();
公共附件(){
属性=新属性();
properties.put(“mail.smtp.host”、“smtp.gmail.com”);//smtp主机
properties.put(“mail.smtp.port”,“587”);//TLS端口
properties.put(“mail.smtp.auth”,“true”);//启用身份验证
properties.put(“mail.smtp.starttls.enable”,“true”);//enable starttls
properties.put(“mail.smtp.ssl.trust”,“*”);
}
公共字符串sendEmailNow(字符串imagepath、上下文mContext){
Authenticator auth=新的验证器(){
//重写getPasswordAuthentication方法
受保护的密码身份验证getPasswordAuthentication(){
返回新的PasswordAuthentication(用户、密码);
}
};
Session Session=Session.getInstance(属性,new javax.mail.Authenticator(){
受保护的密码身份验证getPasswordAuthentication(){
返回新的PasswordAuthentication(用户、密码);
}
});
//2) 撰写信息
试一试{
MimeMessage message=新MimeMessage(会话);
message.setFrom(新Internet地址(用户));
message.addRecipient(message.RecipientType.TO,新Internet地址(TO));
//message.addRecipient(message.RecipientType.BCC,新InternetAddress());
message.setSubject(“移动医生:+”);
//3) 创建MimeBodyPart对象并设置消息文本
BodyPart消息BodyPart1=新的MimeBodyPart();
messageBodyPart1.setText(“请查找随附的Rx”);
//4) 创建新的MimeBodyPart对象并将DataHandler对象设置为此对象
MimeBodyPart消息BodyPart2=新的MimeBodyPart();
字符串filename=imagepath;//相应地更改
DataSource source=新文件DataSource(文件名);
messageBodyPart2.setDataHandler(新的DataHandler(源));
messageBodyPart2.setFileName(文件名);
//5) 创建多部分对象并将MimeBodyPart对象添加到此对象
Multipart Multipart=新的MimeMultipart();
multipart.addBodyPart(messageBodyPart1);
multipart.addBodyPart(messageBodyPart2);
//6) 将multipart对象设置为message对象
message.setContent(多部分);
//7) 发送消息
传输。发送(消息);
删除文件(imagepath);
//startService(新意图(mContext,CheckImages.class));
返回“成功”;
}捕获(消息例外){
Log.e(标记“未发送”);
startService(新意图(mContext,CheckImages.class));
返回“失败”;
}
}
公共布尔删除文件(字符串路径){
文件=新文件(路径);
返回文件.delete();
}
我正在调用sendEmailNow(String imagepath,Context McContext)方法是异步任务。它只拍摄一张图像。之后它就不工作了


有人能帮我吗。我的问题是在循环中如何调用异步任务。异步任务完成后,只有下一个项目应该发送,

请描述“之后它不工作”文件夹有一个图像它工作,如果它有多个图像它不工作