Форум программистов, компьютерный форум, киберфорум
Delphi: FireMonkey
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/26: Рейтинг темы: голосов - 26, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 4
1

Отправка почты [Delphi XE5 Android]

16.05.2014, 20:24. Показов 4808. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Хочу написать программу на Андроид которая будет отправлять на Почту письмо.
Вот код программы:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
unit Unit1;
 
interface
 
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, IdComponent,
  IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient,
  IdSMTPBase, IdSMTP, IdBaseComponent, IdMessage, FMX.StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    IdMessage1: TIdMessage;
    IdSMTP1: TIdSMTP;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.fmx}
 
procedure TForm1.Button1Click(Sender: TObject);
var
msg:TIdMessage;
begin
try
msg:=TIdMessage.Create(nil);
msg.Body.Add('ТЕСТ 123456');
msg.Subject:='ТЕМА 123';
msg.From.Address:='n_o_soul@mail.ru';
msg.From.Name:='GAGARIN';
msg.Recipients.EMailAddresses:='n_o_soul@mail.ru';
msg.IsEncoded:=True;
IdSMTP1.Send(msg);
msg.Free;
IdSMTP1.Disconnect;
except
on e:Exception do
begin
msg.Free;
IdSMTP1.Disconnect;
end;
end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
try
IdSMTP1.Host:='smtp.mail.ru';
IdSMTP1.Port:=25;
IdSMTP1.Username:='n_o_soul@mail.ru';
IdSMTP1.Password:='pass123456';
IdSMTP1.Connect;
except
on e:Exception do
end;
end;
 
end.
Когда запускаю приложение на телефоне нажымаю кнопку то кнопка остается нажатой и приложение не отвечает.
Когда же пробую этот же код но на Десктопное приложение все работает.
Помогите пожалуйста решить проблему.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2014, 20:24
Ответы с готовыми решениями:

Delphi XE5 Android!
АПК на андроиде версии 4 запускается и работает нормально а на версиях с выше 5 не запускается и не...

Delphi XE5 & Android
Вчера поставил RAD Studio и решил написать примитивный аудио плеер для Android, но возникла такая...

Клавиатура Android - Delphi XE5
Такая проблема, вводится текст в edit, после нажатия на edit, его закрывает клавиатура, можно ли...

Delphi XE5: Android рисовалка
Всем доброго времени суток. Пытаюсь потихоньку осваивать Delphi XE5 под Android Встала задача...

7
3 / 3 / 2
Регистрация: 20.12.2012
Сообщений: 24
17.05.2014, 08:42 2
Пробегись трасертом, узнай на какой строчке зависает приложение.
0
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 4
22.05.2014, 18:08  [ТС] 3
а как это сделать на Delphi XE5 если я не использую емулятор, а использую телефон.
0
brunnengi
31.07.2014, 17:33 4
Не знаю насколько актуален еще твой вопрос, но мало ли, отвечу.
Вообще согласно канонам построения приложений под Андроид, вы не должны запускать подобные операции в главном потоке. Выносите код в отдельный поток. Это указание по разработке от самого Гугла. А на время его работы, просто выводите окошко что "идет процесс передачи" или типа того.

Но и конечно сама суть того что вы хотите сделать в корне не верна. Отправка почты со смартфона - это не самый продуктивный вариант. Вообще никто не отправляет почту с Андроид приложений. По крайней мере не одно адекватное приложение.
Решение конечно же есть. Если вы хотите добавить форму в духе "написать тех поддержке" или "или сообщить разработчикам о проблеме", то вам нужно просто создать форму, где пользователь забьет свой почтовый адрес, тему, и сам текст. А по нажатию на кнопку "отправить", вы прост шлет GET или POST запрос на скрипт, на своем сервере или хостинге. Где сначала принимаете данные и пишите их в таблицу в базе данных. А потом уже со скрипта, с сервера решаете куда и что отсылать. Можете себе на почту, можете себе написать мобильное приложение которое будет проверять нет ли новых записей и т.д.
Такой подход выбирают потому, что почтовые протоколы "толстые", а грузить приложение такими вещами никто не хочет, да и не будет. Запросы GET/POST куда шустрее, да и если понадобиться, то можно использовать GZip сжатие и тогда трафик станет занимать еще меньше места.
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 6
01.08.2014, 00:32 5
У тебя нету библиотеки " idАntifreeze "
Когда под Android делаешь ее почему-то нету.

Ищу другой путь если ты найдешь сообщи мне.)))
0
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 8
26.12.2018, 17:57 6
Вообще никто не отправляет почту с Андроид приложений.
ну кроме почтовых клиентов которые являются Андроид приложениями, видимо ...
0
0 / 0 / 0
Регистрация: 08.05.2023
Сообщений: 1
08.05.2023, 20:16 7
Для отправки электронной почты в приложении для Android в Delphi XE5 можно использовать библиотеку Indy.

Сначала необходимо добавить компоненты IdSMTP, IdMessage и IdText в разделе Indy Clients.

Создайте процедуру, которая будет выполнять отправку электронного письма. Например:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
procedure SendEmail(Sender: TObject);
var
  Email: TIdMessage;
  SMTP: TIdSMTP;
  EmailAddress: string;
begin
  Email := TIdMessage.Create(nil);
  try
    Email.From.Address := 'youremail@gmail.com';
    Email.Recipients.EMailAddresses := 'recipient1@example.com, [email]recipient2@example.com[/email]';
    Email.Subject := 'Subject of your email';
    Email.Body.Text := 'Text of your email';
    SMTP := TIdSMTP.Create(nil);
    try
      SMTP.Host := 'smtp.gmail.com'; // Адрес SMTP-сервера
      SMTP.Port := 587;
      SMTP.Username := 'youremail@gmail.com'; // Ваш логин от почты
      SMTP.Password := 'password'; // Ваш пароль от почты
      SMTP.UseTLS := utUseExplicitTLS;
      SMTP.AuthenticationType := atLogin;
      SMTP.ConnectTimeout := 5000;
      SMTP.Authenticate;
      SMTP.Send(Email);
      ShowMessage('Email sent successfully');
    except
      on E: Exception do
        ShowMessage('Error sending email: ' + E.Message);
    end;
  finally
    Email.Free;
    SMTP.Free;
  end;
end;
Вызовите эту процедуру, когда понадобится отправить электронное письмо. Например, при нажатии на кнопку:
Delphi
1
2
3
4
procedure TForm1.Button1Click(Sender: TObject);
begin
  SendEmail(Self);
end;
Нужно обратить внимание на то, что при отправке через Gmail, вам потребуется включить передачу сообщений по протоколу SMTP в настройках вашей учетной записи Gmail. Кроме того, Gmail может блокировать отправку писем с неизвестных устройств, поэтому возможно, вам также потребуется разрешить доступ к вашей учетной записи Google для вашего приложения Delphi.
0
0 / 0 / 0
Регистрация: 11.03.2020
Сообщений: 1
23.12.2023, 09:54 8
Добрый день всем. Как мне сделать отправку файла с флешки, подключенной к смартфону Андроид (OTG) при помощи приложения (написанного вами), автоматически вызываемого при подключении этой флешки. Адрес почты, ФИО отправителя и ФИО получателя заполняются один раз и запоминаются при следующем вызове. Готов выслушать ваши условия. Спасибо!
0
23.12.2023, 09:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2023, 09:54
Помогаю со студенческими работами здесь

Delphi XE5 Android + GPS
Здравствуйте. Вот решил попробовать по программировать на Android. За Delphi уже давно не садился...

Добавить Android SDK в Delphi XE5
Добрый день! Помогите добавить в Environment options/SDK manager (или еще как) android SDK в delphi...

Delphi XE5, Android, перевод строки
Пишу некотору прогу на андроид. Короче некоторой переменной стрингового типа я присваиваю символ...

Как вставить картинку в Delphi XE5 Android?
У меня трабла. Работал раньше в делфи 7. А там было свойство Image1.Picture чтобы загрузить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru