/* * This file is part of GPSLogger for Android. * * GPSLogger for Android is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * GPSLogger for Android is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GPSLogger for Android. If not, see <http://www.gnu.org/licenses/>. */ package com.mendhak.gpslogger.senders.email; import com.mendhak.gpslogger.common.AppSettings; import com.mendhak.gpslogger.common.IActionListener; import com.mendhak.gpslogger.common.Utilities; import com.mendhak.gpslogger.senders.IFileSender; import java.io.File; import java.util.ArrayList; import java.util.Date; import java.util.List; public class AutoEmailHelper implements IActionListener, IFileSender { IActionListener callback; public AutoEmailHelper(IActionListener callback) { this.callback = callback; } // @Override public void UploadFile(List<File> files) { ArrayList<File> filesToSend = new ArrayList<File>(); //If a zip file exists, remove others for (File f : files) { filesToSend.add(f); if (f.getName().contains(".zip")) { filesToSend.clear(); filesToSend.add(f); break; } } Thread t = new Thread(new AutoSendHandler(filesToSend.toArray(new File[filesToSend.size()]), this)); t.start(); } void SendTestEmail(String smtpServer, String smtpPort, String smtpUsername, String smtpPassword, boolean smtpUseSsl, String emailTarget, String fromAddress, IActionListener helper) { Thread t = new Thread(new TestEmailHandler(helper, smtpServer, smtpPort, smtpUsername, smtpPassword, smtpUseSsl, emailTarget, fromAddress)); t.start(); } public void OnComplete() { // This was a success Utilities.LogInfo("Email sent"); callback.OnComplete(); } public void OnFailure() { callback.OnFailure(); } // @Override public boolean accept(File dir, String name) { return name.toLowerCase().endsWith(".zip") || name.toLowerCase().endsWith(".gpx") || name.toLowerCase().endsWith(".kml"); } } class AutoSendHandler implements Runnable { File[] files; private final IActionListener helper; public AutoSendHandler(File[] files, IActionListener helper) { this.files = files; this.helper = helper; } public void run() { try { Mail m = new Mail(AppSettings.getSmtpUsername(), AppSettings.getSmtpPassword()); String csvEmailTargets = AppSettings.getAutoEmailTargets(); String[] toArr = csvEmailTargets.split(","); m.setTo(toArr); m.setFrom(AppSettings.getSenderAddress()); m.setSubject("GPS Log file generated at " + Utilities.GetReadableDateTime(new Date())); m.setBody("GPS Log file generated at " + Utilities.GetReadableDateTime(new Date())); m.setPort(AppSettings.getSmtpPort()); m.setSecurePort(AppSettings.getSmtpPort()); m.setSmtpHost(AppSettings.getSmtpServer()); m.setSsl(AppSettings.isSmtpSsl()); for (File f : files) { m.addAttachment(f.getName(), f.getAbsolutePath()); } Utilities.LogInfo("Sending email..."); if (m.send()) { helper.OnComplete(); } else { helper.OnFailure(); } } catch (Exception e) { helper.OnFailure(); Utilities.LogError("AutoSendHandler.run", e); } } } class TestEmailHandler implements Runnable { String smtpServer; String smtpPort; String smtpUsername; String smtpPassword; boolean smtpUseSsl; String csvEmailTargets; IActionListener helper; String fromAddress; public TestEmailHandler(IActionListener helper, String smtpServer, String smtpPort, String smtpUsername, String smtpPassword, boolean smtpUseSsl, String csvEmailTargets, String fromAddress) { this.smtpServer = smtpServer; this.smtpPort = smtpPort; this.smtpPassword = smtpPassword; this.smtpUsername = smtpUsername; this.smtpUseSsl = smtpUseSsl; this.csvEmailTargets = csvEmailTargets; this.helper = helper; this.fromAddress = fromAddress; } public void run() { try { Mail m = new Mail(smtpUsername, smtpPassword); String[] toArr = csvEmailTargets.split(","); m.setTo(toArr); if (fromAddress != null && fromAddress.length() > 0) { m.setFrom(fromAddress); } else { m.setFrom(smtpUsername); } m.setSubject("Test Email from GPSLogger at " + Utilities.GetReadableDateTime(new Date())); m.setBody("Test Email from GPSLogger at " + Utilities.GetReadableDateTime(new Date())); m.setPort(smtpPort); m.setSecurePort(smtpPort); m.setSmtpHost(smtpServer); m.setSsl(smtpUseSsl); m.setDebuggable(true); Utilities.LogInfo("Sending email..."); if (m.send()) { helper.OnComplete(); } else { helper.OnFailure(); } } catch (Exception e) { helper.OnFailure(); Utilities.LogError("AutoSendHandler.run", e); } } }