- Отправка E-Mail средствами Android
- Часть 1. Mail, просто Mail
- Часть 2. Mail, анонимус Mail
- Send Email with Attachment in Android
- 1)MainActivity.java
- 2)activity_main.xml
- 3)AndroidManifest.xml
- Like This Article? Read More From Java Code Geeks
- Mpdf e-mail Attachment отправляет пустой PDF
- 2 ответа
- Похожие вопросы:
- How to Save Email Attachments on Android from the Gmail or Email Android App
Отправка E-Mail средствами Android
Привет хабр и привет всем!
В данной статье я покажу как реализуется отправка писем средствами самого Android, а также ещё один более интересный способ, но уже с применением внешней библиотеки, которая позволяет нам отсылать письма более приемлимыми для программиста способами.
Часть 1. Mail, просто Mail
- public class SimpleEMail extends Activity <
- Button send;
- EditText address, subject, emailtext;
- @Override
- public void onCreate(Bundle savedInstanceState) <
- super.onCreate(savedInstanceState);
- setContentView(R.layout.simple_email);
- // Наши поля и кнопка
- send = (Button) findViewById(R.id.emailsendbutton);
- address = (EditText) findViewById(R.id.emailaddress);
- subject = (EditText) findViewById(R.id.emailsubject);
- emailtext = (EditText) findViewById(R.id.emailtext);
- send.setOnClickListener( new OnClickListener() <
- @Override
- public void onClick(View v) <
- final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
- emailIntent.setType( «plain/text» );
- // Кому
- emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
- new String [] < address.getText().toString() >);
- // Зачем
- emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
- subject.getText().toString());
- // О чём
- emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,
- emailtext.getText().toString());
- // С чем
- emailIntent.putExtra(
- android.content.Intent.EXTRA_STREAM,
- Uri .parse( «file://»
- + Environment.getExternalStorageDirectory()
- + «/Клипы/SOTY_ATHD.mp4» ));
- emailIntent.setType( «text/video» );
- // Поехали!
- SimpleEMail. this .startActivity(Intent.createChooser(emailIntent,
- «Отправка письма. » ));
- >
- >);
- >
- >
* 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) — Основной метод, в который передаются наши данные для отправки.
Рассмотрим код последнего метода чуть ближе:
- public synchronized void sendMail( String subject, String body, String sender, String recipients, String filename) throws Exception <
- try <
- MimeMessage message = new MimeMessage(session);
- // Кто
- message.setSender( new InternetAddress(sender));
- // О чем
- message.setSubject(subject);
- // Кому
- if (recipients.indexOf( ‘,’ ) > 0)
- message.setRecipients(Message.RecipientType.TO,
- InternetAddress.parse(recipients));
- else
- message.setRecipient(Message.RecipientType.TO,
- new InternetAddress(recipients));
- // Хочет сказать
- BodyPart messageBodyPart = new MimeBodyPart();
- messageBodyPart.setText(body);
- _multipart.addBodyPart(messageBodyPart);
- // И что показать
- if (!filename.equalsIgnoreCase( «» )) <
- BodyPart attachBodyPart = new MimeBodyPart();
- DataSource source = new FileDataSource(filename);
- attachBodyPart.setDataHandler( new DataHandler(source));
- attachBodyPart.setFileName(filename);
- _multipart.addBodyPart(attachBodyPart);
- >
- message.setContent(_multipart);
- Transport.send(message);
- > catch (Exception e) <
- Log.e( «sendMail» , «Ошибка отправки функцией sendMail! » );
- >
- >
* 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:
- private class sender_mail_async extends AsyncTask String , Boolean><
- ProgressDialog WaitingDialog;
- @Override
- protected void onPreExecute() <
- // Выводим пользователю процесс загрузки
- WaitingDialog = ProgressDialog.show(ExtendedMail. this , «Отправка данных» , «Отправляем сообщение. » , true );
- >
- @Override
- protected void onPostExecute(Boolean result) <
- // Прячем процесс загрузки
- WaitingDialog.dismiss();
- Toast.makeText(mainContext, «Отправка завершена. » , Toast.LENGTH_LONG).show();
- ((Activity)mainContext).finish();
- >
- @Override
- protected Boolean doInBackground(Object. params ) <
- try <
- // Получаем данные с наших полей
- title = ((EditText)findViewById(R.id.screen_sendnews_et_title)).getText().toString();
- text = ((EditText)findViewById(R.id.screen_sendnews_et_text)).getText().toString();
- from = «from_post_msg@gmail.com» ;
- where = «where_post_msg@yandex.ru» ;
- // Вызываем конструктор и передаём в него наши логин и пароль от ящика на gmail.com
- MailSenderClass sender = new MailSenderClass( «mypostmail@gmail.com» , «password» );
- // И вызываем наш метод отправки
- sender.sendMail(title, text, from , where , attach);
- > catch (Exception e) <
- Toast.makeText(mainContext, «Ошибка отправки сообщения!» , Toast.LENGTH_SHORT).show();
- >
- return false ;
- >
- >
* This source code was highlighted with Source Code Highlighter .
- public void onClick(View v) <
- sender_mail_async async_sending = new sender_mail_async();
- async_sending.execute();
- >
* This source code was highlighted with Source Code Highlighter .
Таким образом создав небольшой класс-поток, можно спокойно слать необходимую информацию от клиента к себе на ящик.
Источник
Send Email with Attachment in Android
Posted by: Manish Srivastava in Android Core October 3rd, 2013 20 Comments Views
This is a simple demo for send email in Android with attachment. For attachment I am using Intent.ACTION_GET_CONTENT.
Don’t forget to add permissions in your manifest.xml-
1)MainActivity.java
2)activity_main.xml
3)AndroidManifest.xml
Like This Article? Read More From Java Code Geeks
This site uses Akismet to reduce spam. Learn how your comment data is processed.
Thanks for the above tutorial,
But How can we read email with Attachments in Android App.
As we can read Complete Mail on Gmail’s Own App.
Thanks A lot again.
Waiting for Your Reply.
i’m new for android…. i need code for displaying DAT file……
i have one problem..
i added this to my app but i can’t make it work
i made new activity and added this to AndroidManifest
also i did the other but not working… it’s workin when i make contactusActivity the default activity… how i can run it along with the other activities?
Hello, how can we do the same thing but this time for a word document ??
How can i send an email in background in android studio?
I am getting errors with this code 🙁
in above code only image can attached how we do for any doc file or other file
Sir! The code almost works fine… But, whenever i send email or compose it.. It shows me “Successfully! sent”… (I had added a alert) but the message doesn’t actually sent.. I had checked mailbox and even Spambox but no message there sent via this app.
Please feedback this query with a valid solution.
Источник
Mpdf e-mail Attachment отправляет пустой PDF
Я успешно сгенерировал PDF с помощью mpdf, который я проверил, загрузив PDF. Однако, когда я отправляю PDF в качестве вложения электронной почты, я получаю пустой PDF с ошибкой «Out of Memory» от Adobe Reader. Ниже приведен мой код:
Есть ли какие-нибудь идеи относительно того, почему PDF оказывается пустым после отправки в качестве вложения электронной почты? Спасибо.
2 ответа
Я использую mPDF для генерации PDF при нажатии кнопки. Я ищу способ добавить PDF во вложение с помощью PHPmailer. Вот что я попробовал: $mpdf = new mPDF(); $mpdf->WriteHTML($output); $emailAttachment = $mpdf->Output(‘filename.pdf’,’S’); $emailAttachment =.
Я использую класс mPDF и успешно могу сгенерировать email со следующим кодом. Однако мой email выходит пустым. Я предполагаю, но не уверен, имеет ли это какое-то отношение к моим заголовкам. Мне трудно сказать, потому что я получаю свои электронные письма, но не могу открыть pdf, который он.
Вы ошибаетесь здесь вы не берете объект, на котором записаны ваши данные
пожалуйста, замените приведенный ниже код на приведенный выше, чтобы получить правильный результат.
используйте $content в вашем email
Если вы можете использовать swiftmailer, вы можете прикрепить MPDF сгенерированный PDF к email, довольно легко, следующим образом:
Похожие вопросы:
Мой пример кодирования для создания pdf с помощью mpdf таков (он отлично работает) WriteHTML(‘
Your first taste of creating.
Я пропускал этот пост , чтобы сгенерировать pdf, но вывод пустой и нет никакой ошибки, я поставил : public function generate_pdf() < $this->load->library(‘mpdf’); $mpdf=new mPDF(‘utf-8′,’A4’);.
У меня есть настройка Zend_Mail, и она работает нормально, но изображения png в моем вложении pdf скремблируются. Это бит, отвечающий за прикрепление: $filecontents = file_get_contents($attachment);.
Я использую mPDF для генерации PDF при нажатии кнопки. Я ищу способ добавить PDF во вложение с помощью PHPmailer. Вот что я попробовал: $mpdf = new mPDF(); $mpdf->WriteHTML($output);.
Я использую класс mPDF и успешно могу сгенерировать email со следующим кодом. Однако мой email выходит пустым. Я предполагаю, но не уверен, имеет ли это какое-то отношение к моим заголовкам. Мне.
Я пытаюсь распечатать свой контент на PDF с помощью инструмента Mpdf . Код работает в localhost, но когда я устал от того же кода на сервере, он не работает, давая некоторую ошибку eroor mPDF error.
Я настроил систему, в которой при нажатии на кнопку контракт отправляется с прикрепленным pdf. Я использовал mpdf для отправки email на требуемый адрес email. Следующий код отлично работает на моем.
Я знаю, как сгенерировать PDF с помощью библиотеки mPDF и отправить его как вложение с помощью PHPMailer-что — то вроде этого: . $emailAttachment = $mpdf->Output(‘file.pdf’, ‘S’); $mail = new.
Я пытаюсь создать документ pdf с помощью mpdf, и на первом этапе я попытался сохранить его в папке загрузок, а затем попытался открыть его, и он работал идеально. Я вижу, что мне нужно в документе.
Есть ли какой-нибудь способ расшифровать pdf с помощью библиотеки MPDF (PHP)? Я получаю pdf от 3-й стороны, и они используют FPDI для его шифрования. Я использую MPDF , чтобы сделать его защищенным.
Источник
How to Save Email Attachments on Android from the Gmail or Email Android App
Save my Attach is a nice utility android app that allows saving an attachment from the Email and Gmail android apps. To download an attachment, open your mail app, hit the preview button in the mail and select ‘save my attach’ option.
Android Market has got hell lot of applications that can make your life easier than before. One of them that caught our attention today is the ‘Save my Attach’ app that can save the attachments in your mail, pretty neat and easy.
All you need to do is download the “Save my Attach” android app — totally Free — from the android market. For that, either scan the QR Code below with the barcode scanner app or if you’re on phone, hit the market link link below.
In case you’re wondering, ‘Save my Attach’ is compatible with all android versions.
Once you’ve installed the app, it becomes very easy to download any attachment in the mail. Just hit the preview button and from the pop-up that appears then, select “save my attach” option. There is an option to rename your attachment right from there, which is very well thought option by the app’s developer, Lexa.
You can download any sort of file from the app — pics, mp3s, pdf, etc
We hope ‘Save my Attach’ does its job for you, but in case you face a problem or two, let us know in the comments below. If you think there are some features lacked in the app, feel free to write in comments, we’ll take it to developer, for sure.
Kapil Malani
A die-hard Liverpool FC fan, Kapil is a big fan of Batman, Android and street Cricket. In that order, probably. Email: [email protected]
Источник