在Android中以电子邮件的形式在后台发送多个文件
我有一个文件夹,在该文件夹中有5个文件。我想把这五个文件分别邮寄出去。我可以使用以下代码读取文件:在Android中以电子邮件的形式在后台发送多个文件,android,email,Android,Email,我有一个文件夹,在该文件夹中有5个文件。我想把这五个文件分别邮寄出去。我可以使用以下代码读取文件: File directory = new File(Environment.getExternalStorageDirectory() + "/folderName"); File[] contents = directory.listFiles(); 对于发送电子邮件,我有电子邮件课程 public class SendAttachment { private String to =
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)方法是异步任务。它只拍摄一张图像。之后它就不工作了
有人能帮我吗。我的问题是在循环中如何调用异步任务。异步任务完成后,只有下一个项目应该发送,请描述“之后它不工作”文件夹有一个图像它工作,如果它有多个图像它不工作