Многим наверно приходила в голову мысль о том что отправка из приложения писем на e-mail была бы весьма кстати. К примеру в качестве фидбека о работе программы, или с регистрационными данными, да мало ли для чего еще. Так и мне при разработке программы захотелось получать сообщения с ошибками в программе, так как будучи инди-разработчиком, под рукой имею десяток-другой наиболее распространенных телефонов, и провести крупномасштабное тестирование на широком диапазоне аппаратов, особенно новых, не так то просто. Поэтому механизм уведомлений о ошибках был бы весьма кстати, как минимум на этапе бета-тестирования. Покопавшись в сети нашел несколько библиотек для работы с электронной почтой, в том числе с mobilab'а. Но сколько бы не старался, у меня так и не получилось отправить письмо, хотя демки работали. А время поджимало.
Как гласит народная мудрость,
Я нашел на этом сайте исходники почтового клиента, и хотя бы он заработал. Но к сожалению обнаружил проблемы с кодировкой спецсимволов и кириллицы. Пришлось на скорую добавить свой кодировщик строк. Оформил всё в библиотеку, написал класс для работы с ней и добавил в приложение. Сначала это был отдельный пункт, из которого пользователи могли в случае чего отправлять сообщения, которые приходили мне на почту.

Позже пришел к выводу что надежней будет автоматизировать это дело, заранее предупредив пользователей о сборе информации о ошибках.

В результате итоговый код отправки стал таким:
А письма у меня выгладят примерно так

И собственно обработчик-отправщик
Ну и исходники библиотеки goo.gl/oVv8e
Как гласит народная мудрость,
Хочешь сделать хорошо-сделай сам
Я нашел на этом сайте исходники почтового клиента, и хотя бы он заработал. Но к сожалению обнаружил проблемы с кодировкой спецсимволов и кириллицы. Пришлось на скорую добавить свой кодировщик строк. Оформил всё в библиотеку, написал класс для работы с ней и добавил в приложение. Сначала это был отдельный пункт, из которого пользователи могли в случае чего отправлять сообщения, которые приходили мне на почту.

Позже пришел к выводу что надежней будет автоматизировать это дело, заранее предупредив пользователей о сборе информации о ошибках.

В результате итоговый код отправки стал таким:
} 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 = "bugreport@mail.ru"; String pass = "123456"; String adressto = "s.komlach@gmail.com"; 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

