Многие наверняка подумали, что отправка писем на электронную почту из приложения будет очень полезной.
Например, в качестве отзыва о работе программы, или с регистрационными данными, или мало ли что еще.
Итак, при разработке программы я хотел получать сообщения об ошибках в программе, ведь у меня как у инди-разработчика под рукой десяток-другой самых обычных телефонов, а масштабное тестирование провести не так-то просто.
на широком спектре устройств, особенно новых.
Поэтому механизм уведомления об ошибках был бы очень полезен, по крайней мере, на этапе бета-тестирования.
Покопавшись в сети, я нашел несколько библиотек для работы с почтой, в том числе и mobilab. Но как я ни старался, мне так и не удалось отправить письмо, хотя демо-версии работали.
А время истекало.
Как гласит народная мудрость,
Если хочешь, чтобы все было хорошо, сделай это сам
Я нашел на этот сайт исходный код почтового клиента, и, по крайней мере, он работал.Но к сожалению обнаружил проблемы с кодировкой спецсимволов и кириллицы.
Мне пришлось быстро добавить собственный кодировщик строк.
Я скомпилировал все в библиотеку, написал класс для работы с ней и добавил в приложение.
Сначала это была отдельная точка, из которой пользователи могли в случае чего отправлять сообщения, пришедшие мне на почту.
Позже я пришел к выводу, что надежнее было бы автоматизировать это дело, заранее предупреждая пользователей о сборе информации об ошибках.
В результате окончательный код отправки стал таким:
И мои письма выглядят примерно так} catch (Exception ex ){ sendMail("main class","some method" , ex); } public void sendMail(string classname, String methodname, Exception e) { SendMail mail=new SendMail(); mail.setText(classname+":"+methodname+":"+ e.toString()); mail.start(); }
И сам обработчик отправителя
import Mail.Connection;
import Mail.Decoder;
import Mail.Message;
import Mail.SmtpClient;
public class SendMail extends Thread {
String host = "smtp.mail.ru";
int port=25;
String adressfrom = "[email protected]";
String pass = "123456";
String adressto = "[email protected]";
String subject = "Bugreport";
String text = "";
public void run() {
try {
String string = Decoder.encode(text, false);
SmtpClient smtpclient = new SmtpClient(new Connection());
smtpclient.open(host, port, adressfrom, pass);
Message message = new Message(adressfrom, adressto, Decoder.encode(subject), true));
message.addHeaderLine("X-mailer: 1.0");
message.addHeaderLine("Content-Type: text/plain; charset=UTF-8");
message.addHeaderLine("Content-Transfer-Encoding: quoted-printable");
message.addBodyLine(string.concat("\r\n"));
smtpclient.sendMessage(message);
smtpclient.close();
} catch (Exception exception) {
}
}
public void setText(String text) {
this.text = text;
}
}
Ну и исходники библиотеки goo.gl/oVv8e Теги: #разработка j2me #отправка электронной почты #разработка Java ME
-
Эджворт, Фрэнсис Исидро
19 Oct, 24 -
Яндекс Использует «Взлет Ракеты»
19 Oct, 24 -
Разница Между Разметкой И Представлением
19 Oct, 24 -
Autorenter - Сайт Проката Автомобилей
19 Oct, 24 -
Типографика: Процесс Выбора Шрифта
19 Oct, 24