Андроид пишет письма как ему

Отправка E-Mail средствами Android

Привет хабр и привет всем!

В данной статье я покажу как реализуется отправка писем средствами самого Android, а также ещё один более интересный способ, но уже с применением внешней библиотеки, которая позволяет нам отсылать письма более приемлимыми для программиста способами.

Часть 1. Mail, просто Mail

  1. public class SimpleEMail extends Activity <
  2. Button send;
  3. EditText address, subject, emailtext;
  4. @Override
  5. public void onCreate(Bundle savedInstanceState) <
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.simple_email);
  8. // Наши поля и кнопка
  9. send = (Button) findViewById(R.id.emailsendbutton);
  10. address = (EditText) findViewById(R.id.emailaddress);
  11. subject = (EditText) findViewById(R.id.emailsubject);
  12. emailtext = (EditText) findViewById(R.id.emailtext);
  13. send.setOnClickListener( new OnClickListener() <
  14. @Override
  15. public void onClick(View v) <
  16. final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
  17. emailIntent.setType( «plain/text» );
  18. // Кому
  19. emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
  20. new String [] < address.getText().toString() >);
  21. // Зачем
  22. emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
  23. subject.getText().toString());
  24. // О чём
  25. emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,
  26. emailtext.getText().toString());
  27. // С чем
  28. emailIntent.putExtra(
  29. android.content.Intent.EXTRA_STREAM,
  30. Uri .parse( «file://»
  31. + Environment.getExternalStorageDirectory()
  32. + «/Клипы/SOTY_ATHD.mp4» ));
  33. emailIntent.setType( «text/video» );
  34. // Поехали!
  35. SimpleEMail. this .startActivity(Intent.createChooser(emailIntent,
  36. «Отправка письма. » ));
  37. >
  38. >);
  39. >
  40. >

* This source code was highlighted with Source Code Highlighter .

Вот, код до безобразия прост. Правда можно еще проще: если нам лень создавать дополнительное Activity для ввода наших полей, то можно было бы просто запустить наш Intent.

Плюсы: Простая реализация, достаточно удобно для обратной связи.
Минусы: У пользователя должна быть настроенная программа приёма-передачи почтовых сообщений, без неё обрабатывать данный Intent будет некому.

Часть 2. Mail, анонимус Mail

Данный метод я использовал в своём проекте, обозначим для начала плюсы:

  • Не требует от пользователя настроенного клиента
  • Может быть полностью анонимным
  • Можно передавать все (в пределах разумного, конечно)

Для работы необходимы дополнительные библиотеки javamail-android.
Качаем их, и встраиваем в проект: Контекстное меню проекта > «Build Path» > «Add External Archives. » > «Наши файлы additional, mail, activation»

Для настройки нам также понадобится почтовый ящик зарегистрированный на gmail.com (или любом другом yandex, mail и.т.п.) настройки вы можете посмотреть здесь. В данном случае он будет выступать в виде шлюза через которые будут проходить наши письма.

Начинаем настраивать:
MailSenderClass.java
В данном классе записаны настройки того сервера, через который будет передаваться ваше сообщение. Здесь у нас есть несколько методов:

  • public MailSenderClass(String user, String password) — Конструктор. В качестве аргументов передаются логин и пароль от нашего промежуточного ящика на gmail.com. Здесь же прописываются параметры smtp-подключения к серверу.
  • protected PasswordAuthentication getPasswordAuthentication() — Аутентификация для сервера.
  • public synchronized void sendMail(String subject, String body, String sender, String recipients, String filename) — Основной метод, в который передаются наши данные для отправки.

Рассмотрим код последнего метода чуть ближе:

  1. public synchronized void sendMail( String subject, String body, String sender, String recipients, String filename) throws Exception <
  2. try <
  3. MimeMessage message = new MimeMessage(session);
  4. // Кто
  5. message.setSender( new InternetAddress(sender));
  6. // О чем
  7. message.setSubject(subject);
  8. // Кому
  9. if (recipients.indexOf( ‘,’ ) > 0)
  10. message.setRecipients(Message.RecipientType.TO,
  11. InternetAddress.parse(recipients));
  12. else
  13. message.setRecipient(Message.RecipientType.TO,
  14. new InternetAddress(recipients));
  15. // Хочет сказать
  16. BodyPart messageBodyPart = new MimeBodyPart();
  17. messageBodyPart.setText(body);
  18. _multipart.addBodyPart(messageBodyPart);
  19. // И что показать
  20. if (!filename.equalsIgnoreCase( «» )) <
  21. BodyPart attachBodyPart = new MimeBodyPart();
  22. DataSource source = new FileDataSource(filename);
  23. attachBodyPart.setDataHandler( new DataHandler(source));
  24. attachBodyPart.setFileName(filename);
  25. _multipart.addBodyPart(attachBodyPart);
  26. >
  27. message.setContent(_multipart);
  28. Transport.send(message);
  29. > catch (Exception e) <
  30. Log.e( «sendMail» , «Ошибка отправки функцией sendMail! » );
  31. >
  32. >

* This source code was highlighted with Source Code Highlighter .

Метод также прост. Используя объект класса MimeMessage составляем наше письмо и для отправки передаём методу send, класса Transport.

Читайте также:  Обзор виджет для андроид

JSSEProvider.java
Провайдер протокола безопасности для нашей почты. Линк.

VideoSelect.java
Код был взят из ApiDemos, которые поставляются в комплекте с Android SDK, и был чуть подправлен для выполнения с помощью метода startActivityForResult.
После выполнения возвращается строка, содержащая путь к файлу на карте памяти. Код можно будет посмотреть в проекте, он в конце статьи.

ExtendedMail.java
Основной метод отправления сообщения выполняется в функции sitv_sender_mail_async, представляющей класс AsyncTask:

  1. private class sender_mail_async extends AsyncTask String , Boolean><
  2. ProgressDialog WaitingDialog;
  3. @Override
  4. protected void onPreExecute() <
  5. // Выводим пользователю процесс загрузки
  6. WaitingDialog = ProgressDialog.show(ExtendedMail. this , «Отправка данных» , «Отправляем сообщение. » , true );
  7. >
  8. @Override
  9. protected void onPostExecute(Boolean result) <
  10. // Прячем процесс загрузки
  11. WaitingDialog.dismiss();
  12. Toast.makeText(mainContext, «Отправка завершена. » , Toast.LENGTH_LONG).show();
  13. ((Activity)mainContext).finish();
  14. >
  15. @Override
  16. protected Boolean doInBackground(Object. params ) <
  17. try <
  18. // Получаем данные с наших полей
  19. title = ((EditText)findViewById(R.id.screen_sendnews_et_title)).getText().toString();
  20. text = ((EditText)findViewById(R.id.screen_sendnews_et_text)).getText().toString();
  21. from = «from_post_msg@gmail.com» ;
  22. where = «where_post_msg@yandex.ru» ;
  23. // Вызываем конструктор и передаём в него наши логин и пароль от ящика на gmail.com
  24. MailSenderClass sender = new MailSenderClass( «mypostmail@gmail.com» , «password» );
  25. // И вызываем наш метод отправки
  26. sender.sendMail(title, text, from , where , attach);
  27. > catch (Exception e) <
  28. Toast.makeText(mainContext, «Ошибка отправки сообщения!» , Toast.LENGTH_SHORT).show();
  29. >
  30. return false ;
  31. >
  32. >

* This source code was highlighted with Source Code Highlighter .

  1. public void onClick(View v) <
  2. sender_mail_async async_sending = new sender_mail_async();
  3. async_sending.execute();
  4. >

* This source code was highlighted with Source Code Highlighter .

Таким образом создав небольшой класс-поток, можно спокойно слать необходимую информацию от клиента к себе на ящик.

Источник

Почему письма не отправляются с электронной почты: решение проблемы

Не бывает такого, чтобы какое-то приложение или сервис в интернете работали идеально всегда – электронной п очты это тоже касается, порой и в ней возникают какие-либо неполадки. Например, письма перестают отправляться. Сегодня я разберу основные причины появления данной проблемы на разных почтовых сервисах и опишу способы устранения.

Проверка настроек компьютера и браузера

В большинстве случаев проблема с отправкой возникает не на стороне сервера. Может, причина кроется в действиях пользователя: упущении каких-то элементарных шагов или их неправильном выполнении. Еще допустимо появление неполадок в настройках компьютера.

Чтобы узнать, почему не отправляется письмо, я рекомендую провести сначала вот такие действия на исключение типичных проблем:

  • Очистка истории, кэша и cookies в браузере. В большинстве интернет-обозревателей все указанные действия можно провести с помощью одного инструмента, просто отметив галочки напротив нужных пунктов.

  • Проверка правильности набранного адреса. Возможно, при наборе электронного адреса получателя была допущена ошибка. Если хотя бы один символ будет введен неправильно, ничего отправить не получится. Помните, что адрес почтового ящика может содержать только английский буквы, цифры и некоторые знаки. Точки в конце и пробелов в адресе быть не должно.
  • Проверка интернет-соединения. Можно просто попробовать загрузить другой сайт. Если проблемы с сетью действительно имеются, рекомендую сначала перезагрузить модем/Wi-Fi роутер. Не помогло? Звоните провайдеру!
  • Проверка работы браузера. Может, нужный вам почтовый сервис плохо работает именно в том интернет-обозревателе, которым вы на данный момент пользуетесь. Попробуйте войти в почту с другого браузера и снова отправить письмо.
Читайте также:  Хард ресет для android что это

А что делать, если после отправки приходит отчет о недоставленном сообщении? Возможно, что указанный вами электронный адрес на данный момент не существует.

Вот еще почему не отправляется электронное письмо – почтовый ящик недоступен по каким-либо причинам. Например, из-за переполненности (следует удалить старые письма) или появления проблем с почтовым сервером (лучше подождать некоторое время, как минимум полчаса, и повторить отправку письма).

Если ни одно вышеуказанное действие не помогло, значит, пора разбираться с вашим почтовым сервисом.

Письма не отправляются с ящика Gmail

Данный почтовый сервис используется чаще всего для распространения рассылок или в рабочих целях. Поэтому в нем очень редко возникают проблемы в плане отправки писем. И то в таких ситуациях присылается сначала сообщение об ошибке. Если со стороны сервиса и возникают неполадки, сотрудники в кратчайшие сроки устранят проблемы.

Когда вы грузите какой-то файл в качестве вложения к письму, сервис может заблокировать его в целях безопасности.

А вот почему не отправляются письма с телефона? В таких ситуациях проблемы возникают тогда, когда на используемом клиентом устройстве недостаточно памяти.

Если вам не удалось выяснить, почему с почты не отправляются письма, лучше повторно очистите данные браузера, проверьте корректность введенных данных и соединение с сетью.

Когда ничего не помогает, рекомендую обратиться в службу технической поддержки почтового сервиса Gmail. При этом следует подробно описать суть проблемы, желательно приложив скриншоты.

Проблема с Mail.Ru

В Mail.Ru тоже проблемы с доставкой сообщений встречаются очень редко. При неудачной отправке письма можно попробовать повторно провести операцию, обычно это помогает.

Еще один вариант – к письму был приложен файл большого объема. Он либо превышает установленные ограничения сервиса Мэйл.Ру, либо из-за низкой скорости интернета не загружается.

Если вы слишком часто посылаете со своего почтового ящика письма одинакового содержания, сервис может заподозрить вас в распространении спама. Такое бывает, когда ящик взламывают. Решить подобное можно прямо на сайте сервиса (обычно предлагается сменить пароль). Еще следует проверить папку «Исходящие» и узнать, какие именно письма отправлялись с вашего ящика.

Не помогло – обращайтесь в Помощь Mail.Ru. Переходите в раздел «Письма» и ищите соответствующий пункт. Потом отметьте тип проблемы и отправьте запрос. Сотрудники решат проблему.

Письма не уходят с Яндекс.Почты

Выяснить, почему не отправляется письма с почты Яндекса, очень просто. На этот сервис еще могут влиять дополнения или расширения, установленные в браузере. Для проверки нужно просто поочередно отключать их и проверять работу почты.

Читайте также:  Создаем свой значок андроида

Если письмо попало в «Черновики», попробуйте отправить его повторно. Когда в письме есть вложения, отправка может занять просто немного больше времени.

Яндекс тоже допускает возможность некорректного отображения страницы и рекомендует в таком случае очищать кэш или удалять cookies. Бывают и задержки на серверах как получателя, так и пользователя. В таких ситуациях помогает только обращение в службу технической поддержки.

Проблемы с электронной почтой Rambler

Нетипичные проблемы в работе данного почтового сервиса практически не встречаются. Обычно все можно решить настройкой браузера или очисткой кэша. Еще это один из тех сервисов, в котором при отправке письма важны правильно выставленные дата и время.

Если ваш аккаунт был заблокирован, можно снять блокировку с помощью специального веб-сервиса. Выполнять это действие обязательно нужно через компьютер.

Любые другие неполадки можно легко решить обращением в службу технической поддержки. Желательно как можно более подробно описать ее характер и приложить скриншоты.

Проблемы с почтовыми клиентами

Множество людей пользуются специальными почтовыми клиентами. В таких приложениях можно принимать и отправлять сообщения с разных аккаунтов и от нескольких пользователей. Но даже тут не исключены проблемы в работе.

Microsoft Outlook

Если письмо в Microsoft Outlook не отправляется, сначала надо проверить нижнюю часть окна программы. Если в ней указано «Автономная работа», «Попытка подключения…» или «Отключено», значит, связь с сервером электронной почты не была установлена. Тут поможет повторная отправка письма.

Далее следует стандартная диагностика подключения к интернету и проверка наличия больших вложений в письме. Как уже известно, некоторые почтовые клиенты не поддерживают отправку файлов слишком больших размеров. Лучше грузить подобные файлы в облако и прикреплять в письме ссылку к нему.

Проблема с отправкой может настичь пользователя при недавней смене пароля. В Microsoft Outlook все меняется в «Настройках учетных записей». Влияние антивируса тоже не исключается.

Когда ничего из вышеперечисленного не помогает, следует восстановить программу Microsoft Outlook. Когда и восстановление не помогает, проверять следует уже профиль, с которого вы пытаетесь отправить сообщение.

eM Client

Решать проблемы с отправкой в клиенте eM стоит исходя из сообщения об ошибке. Для данной программы очень важна правильная конфигурация электронной почты. Решить подобную проблему можно изменением порта для SMTP-сервера на 465 с помощью SSL. Если это не сработает, стоит использовать порт 587 с TLS или порт 25 с SSL.

Еще eM Client может блокироваться популярными антивирусными программами. Ранее такое происходило, но производители защитного ПО исправили проблему с выходом обновления. Должно помочь временное отключение антивируса или даже удаление.

В крайнем случае следует переустановить eM Client. Может быть, в момент установки возникли какие-то повреждения.

Заключение

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

Источник

Оцените статью