package com.kescoode.xmail.service.task;
import android.content.Context;
import com.fsck.k9.mail.MessagingException;
import com.fsck.k9.mail.Transport;
import com.fsck.k9.mail.store.RemoteStore;
import com.kescoode.xmail.controller.MailManager;
import com.kescoode.xmail.domain.Account;
import com.kescoode.xmail.domain.LocalStore;
import com.kescoode.xmail.event.SettingCheckEvent;
import com.kescoode.xmail.service.task.internal.Command;
/**
* 验证邮件服务器设置
*
* @author Kesco Lin
*/
public class SettingsCheckCommand extends Command {
private final MailManager manager;
public SettingsCheckCommand(Context context, Account account) {
super(context, account);
manager = MailManager.getSingleTon(context);
}
@Override
public void task() {
Transport transport = account.getTransport();
RemoteStore remoteStore = account.getRemoteStore();
LocalStore localStore = account.getLocalStore();
try {
/* 检验发送服务器配置 */
transport.close();
transport.open(); /* 建立与SMTP服务器的连接,检索所有发件箱的内容 */
transport.close();
sendBroadCaset(new SettingCheckEvent(true, SettingCheckEvent.Type.SEND));
} catch (MessagingException e) {
sendBroadCaset(new SettingCheckEvent(false, SettingCheckEvent.Type.SEND));
}
try {
/* 检测接收服务器配置 */
remoteStore.checkSettings();
manager.addAccount(account);
localStore.syncRemote(remoteStore.getPersonalNamespaces(false));
sendBroadCaset(new SettingCheckEvent(true, SettingCheckEvent.Type.RECEIVE));
} catch (MessagingException e) {
sendBroadCaset(new SettingCheckEvent(false, SettingCheckEvent.Type.RECEIVE));
}
}
}