Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 19:37 28.06.24 
Компютри и Интернет
   >> Delphi
*Кратък преглед

Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема Delphi & E-Mail  
Автор delpx (непознат )
Публикувано22.04.05 21:10



Здравейте.
Може ли някой да ми помогне с готов код за изпращане на майл съобщения тъй като направих няколко неуспешни опита да създам програма на делфи чрез която да се изпращат майли но след като се конектне към smtp и направи опит да изпрати съобщение се получава грешка. Пробвах и с примерния код които идва с делфито но и ной не работи.



Тема Re: Delphi & E-Mailнови [re: delpx]  
Автор PecheniaМодератор (нема лабаво ;-)
Публикувано22.04.05 22:25



Дай текста на грешката
Принципно неуспеха може да се дължи на много неща - firewall например. Като начало отвори един DOS promt и пиши:
telnet SMPT_SERVER_IP 25
ако даде празен екран си с едни гърди напред. Тогава ще борим нататък.

чети и дишай по-леко


Тема Re: Delphi & E-Mailнови [re: Pechenia]  
Авторdelpx (Нерегистриран)
Публикувано23.04.05 11:06



Аме значи като напиша в конзолата telnet smtp.abv.bg 25 се канектва към сървара и ми връща 220 smtp.abv.bg ESMTP

Грешката която ми връща програмата за пращане на майли която идва с делфито е

---------------------------------------------------------------------------------------------------------
1014 - Teh protocol reply to a request indicates that there was an eroor in the reply ( 553 sorry , that domain isn't in list allowed rcpthosts (#5.7.1))
---------------------------------------------------------------------------------------------------------
Каквото и да правя тоя грешка винаги си излиза и не мога да разбера каде е проблема.



Тема Re: Delphi & E-Mailнови [re: delpx]  
АвторXoxo (Нерегистриран)
Публикувано23.04.05 13:00



Не че нещо, но ако ползваш абв-то, имаш ли платен акаунт?

Ако нямаш платен, мисля, че няма начин да стане!

SMTP и POP3 са платени.

Пробвай с някой безплатен - а речем на доставчика.



Тема Re: Delphi & E-Mailнови [re: Xoxo]  
АвторDelpx (Нерегистриран)
Публикувано23.04.05 15:49



Ами пробвал съм с ABV, DIR, Mail.bg , GMail.com като в Mail.bg имам платен акаунт а в Gmail.com pop3 е безплатен. А иначе си мисля че само поп3 е платен а smtp -то е безплатно



Тема Re: Delphi & E-Mailнови [re: Delpx]  
АвторXoxo (Нерегистриран)
Публикувано23.04.05 17:04



Не съм много сигурен, но проблемът може да е от 3 места според мен:

1. SMTP сървъра *от който* пращаш - да не можеш да конфигурираш добре акаунта, някой искат authentication и т.н.

2. Сървърът *към който* плащаш. (може би на него е блокиран домейнът *от който* пращаш - примерно да е в някакъв спам лист) и т.н.

3. Твоят код.

Ако си го правил с Инди - мога да ти помогна, ако си го правил с нещо друго, някой друг може да ти помогне предполагам, но за целта трябва да пост-неш малко код!



Тема Re: Delphi & E-Mailнови [re: Xoxo]  
Авторdelpx (Нерегистриран)
Публикувано23.04.05 17:22



Ето това са ми usera и passa на акаунта в gmail=
delpx1@gmail.com
pass - delian

това е връщаната грешка от този код
Project smtpdemo.exe raised exception class Exception with message 'Incomplete Header'. Process stopped. Use Step or Run to continue.

а това е замият код който си идва с делфи 5

unit smtpdem;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, Psock, NMsmtp, ExtCtrls;

type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
Edit1: TEdit;
NMSMTP1: TNMSMTP;
Label1: TLabel;
Edit2: TEdit;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
TabSheet4: TTabSheet;
StatusBar1: TStatusBar;
Edit3: TEdit;
Label3: TLabel;
Button3: TButton;
Edit4: TEdit;
Label4: TLabel;
Memo1: TMemo;
Panel1: TPanel;
GroupBox1: TGroupBox;
Edit5: TEdit;
Edit6: TEdit;
Label5: TLabel;
Label6: TLabel;
Edit7: TEdit;
Label7: TLabel;
Edit8: TEdit;
Label8: TLabel;
Edit9: TEdit;
Label9: TLabel;
ListBox1: TListBox;
Label10: TLabel;
Button4: TButton;
Button5: TButton;
Memo2: TMemo;
Panel2: TPanel;
Button6: TButton;
Label11: TLabel;
Panel3: TPanel;
Label14: TLabel;
Button7: TButton;
Label12: TLabel;
OpenDialog1: TOpenDialog;
Edit10: TEdit;
Edit11: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure NMSMTP1Connect(Sender: TObject);
procedure NMSMTP1Disconnect(Sender: TObject);
procedure NMSMTP1Status(Sender: TComponent; Status: String);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure NMSMTP1EncodeStart(Filename: String);
procedure NMSMTP1EncodeEnd(Filename: String);
procedure Button7Click(Sender: TObject);
procedure NMSMTP1MailListReturn(MailAddress: String);
procedure NMSMTP1ConnectionFailed(Sender: TObject);
procedure NMSMTP1ConnectionRequired(var handled: Boolean);
procedure NMSMTP1Failure(Sender: TObject);
procedure NMSMTP1HostResolved(Sender: TComponent);
procedure NMSMTP1InvalidHost(var handled: Boolean);
procedure NMSMTP1PacketSent(Sender: TObject);
procedure NMSMTP1RecipientNotFound(Recipient: String);
procedure NMSMTP1SendStart(Sender: TObject);
procedure NMSMTP1Success(Sender: TObject);
procedure NMSMTP1HeaderIncomplete(var handled: Boolean;
hiType: Integer);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
NMSMTP1.Host := Edit1.Text;
NMSMTP1.Port := StrToInt(Edit2.Text);
NMSMTP1.UserID := Edit4.Text;
NMSMTP1.Connect;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
TmpStr: String;
begin
TmpStr := Edit3.Text; // Do this so the user can't change the edit box.
If NMSMTP1.Verify(TmpStr) then
ShowMessage(TmpStr+' verified')
else
ShowMessage(TmpStr+' not verified');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
NMSMTP1.Disconnect;
end;

procedure TForm1.NMSMTP1Connect(Sender: TObject);
begin
StatusBar1.SimpleText := 'Connected';
end;

procedure TForm1.NMSMTP1Disconnect(Sender: TObject);
begin
If StatusBar1 <> nil then
StatusBar1.SimpleText := 'Disconnected';
end;

procedure TForm1.NMSMTP1Status(Sender: TComponent; Status: String);
begin
If StatusBar1 <> nil then
StatusBar1.SimpleText := status;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
If OpenDialog1.Execute then
ListBox1.Items.Add(OpenDialog1.FileName);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
ListBox1.Items.Delete(ListBox1.ItemIndex);
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
NMSMTP1.PostMessage.FromAddress := Edit6.Text;
NMSMTP1.PostMessage.FromName := Edit5.Text;
NMSMTP1.PostMessage.Subject := Edit10.Text;
NMSMTP1.PostMessage.ToAddress.Add(Edit7.Text);
NMSMTP1.PostMessage.ToBlindCarbonCopy.Add(Edit9.Text);
NMSMTP1.PostMessage.ToCarbonCopy.Add(Edit8.Text);
NMSMTP1.PostMessage.Attachments.AddStrings(Listbox1.Items);
NMSMTP1.PostMessage.Body.Assign(Memo1.Lines);
NMSMTP1.SendMail;
end;

procedure TForm1.NMSMTP1EncodeStart(Filename: String);
begin
StatusBar1.SimpleText := 'Encoding '+Filename;
end;

procedure TForm1.NMSMTP1EncodeEnd(Filename: String);
begin
StatusBar1.SimpleText := 'Finished encoding '+Filename;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
NMSMTP1.ExpandList(Edit11.Text);
end;

procedure TForm1.NMSMTP1MailListReturn(MailAddress: String);
begin
Memo2.Lines.Add(MailAddress);
end;

procedure TForm1.NMSMTP1ConnectionFailed(Sender: TObject);
begin
ShowMessage('Connection Failed');
end;

procedure TForm1.NMSMTP1ConnectionRequired(var handled: Boolean);
begin
If MessageDlg('Connection Required. Connect?', mtConfirmation, mbOkCancel, 0) = mrOk then
Begin
Handled := TRUE;
NMSMTP1.Connect;
End;
end;

procedure TForm1.NMSMTP1Failure(Sender: TObject);
begin
StatusBar1.SimpleText := 'Failure';
end;

procedure TForm1.NMSMTP1HostResolved(Sender: TComponent);
begin
StatusBar1.SimpleText := 'Host Resolved';
end;

procedure TForm1.NMSMTP1InvalidHost(var handled: Boolean);
var
TmpStr: String;
begin
If InputQuery('Invalid Host!', 'Specify a new host:', TmpStr) then
Begin
NMSMTP1.Host := TmpStr;
Handled := TRUE;
End;
end;

procedure TForm1.NMSMTP1PacketSent(Sender: TObject);
begin
StatusBar1.SimpleText := IntToStr(NMSMTP1.BytesSent)+' bytes of '+IntToStr(NMSMTP1.BytesTotal)+' sent';
end;

procedure TForm1.NMSMTP1RecipientNotFound(Recipient: String);
begin
ShowMessage('Recipient "'+Recipient+'" not found');
end;

procedure TForm1.NMSMTP1SendStart(Sender: TObject);
begin
StatusBar1.simpleText := 'Sending message';
end;

procedure TForm1.NMSMTP1Success(Sender: TObject);
begin
StatusBar1.SimpleText := 'Success';
end;

procedure TForm1.NMSMTP1HeaderIncomplete(var handled: Boolean;
hiType: Integer);
begin
ShowMessage('Header Incomplete.');
end;





procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
NMSMTP1.Abort;
end;

end.



Тема Re: Delphi & E-Mailнови [re: delpx]  
Авторdelpx (Нерегистриран)
Публикувано24.04.05 12:26



Никой ли не може да ми помогне с изпращането на майли от делфито ?????




Тема Re: Delphi & E-Mailнови [re: delpx]  
Автор PecheniaМодератор (нема лабаво ;-)
Публикувано25.04.05 08:32



Един интересен вариант за изпращане на emal-и е да се ползва стандартната библиотека CDONTS.

Един работещ (на моя компютър) пример с Delphi е следния:

uses ComObj; // за ползване на OLE обектите

procedure TForm1.Button1Click(Sender: TObject);
var MyCDONTSMail: Variant;
begin
MyCDONTSMail:=CreateOleObject ('CDONTS.NewMail');
MyCDONTSMail.From:='somebody@nowhere.com';
MyCDONTSMail.To:='pechenia@abv.bg';
MyCDONTSMail.Subject:='This is a Test';
MyCDONTSMail.Body:='Test';
MyCDONTSMail.Send;
end;

някои забележки:

- за изпращането на attachments - http://www.nt-webspace.com/asp%20tutorial/asp-email-cdonts.asp
- самата библиотека беше стандарт за Windows 2000. За XP трябва да се сложи допълнително: http://clubs.dir.bg/showthreaded.php?Board=asp&Number=1939922160&page=0&view=collapsed&sb=5
- така може успешно да се генерира спам - само до момента в който IP адреса от който изпращате съобщенията влезе в ban лист. Причината е че адреса From може да е произволен Защо е така и как действа самия компонент е отделна тема

Редактирано от Pechenia на 25.04.05 13:37.



Тема Re: Delphi & E-Mailнови [re: delpx]  
АвторИвKo (Нерегистриран)
Публикувано25.04.05 11:59



Грешката която е описваш не е грешка от Делфи, а резултат връщан от SMTP
сървъра..
5.7.1 най-простичко означава "Forwarding to remote hosts disabled", т.е. SMTP сървъра е конфигуриран да забранява изпращане на съобщения до е-майл адреси които не са от неговия домейн, и предполагам, че иска първо да се логнеш в SMTP сървъра, и едва тогава може да изпращаш... И тъй кат Делфито е умно, то ти връща това събощение като грешка...

Един най-малък пример чрез телнет, ще ти е от полза може би. S e сървър, C e клиент:

S: <wait for connection on TCP port 25>
C: <open connection to server>
S: 220 dbc.mtview.ca.us SMTP service ready
C: EHLO ymir.claremont.edu
S: 250-dbc.mtview.ca.us says hello
S: 250 ENHANCEDSTATUSCODES
C: MAIL FROM:<ned@ymir.claremont.edu>
S: 250 2.1.0 Originator <ned@ymir.claremont.edu> ok
C: RCPT TO:<mrose@dbc.mtview.ca.us>
S: 250 2.1.5 Recipient <mrose@dbc.mtview.ca.us> ok
C: RCPT TO:<nosuchuser@dbc.mtview.ca.us>
S: 550 5.1.1 Mailbox "nosuchuser" does not exist
C: RCPT TO:<remoteuser@isi.edu>
S: 551-5.7.1 Forwarding to remote hosts disabled

S: 551 5.7.1 Select another host to act as your forwarder
C: DATA
S: 354 Send message, ending in CRLF.CRLF.
...
C: .
S: 250 2.6.0 Message accepted
C: QUIT
S: 221 2.0.0 Goodbye



Има нещо наречено RFC - Request for Comments. Потърси за RFC 2034 - SMTP Service Extension for Returning Enhanced Error Codes.

съдържа всички Request for Comments.
И каквато ще и библиотека да използваш, ако SMTP сървъра не е смарт-хост, и му е забранен open relay, нищо няма да стане докато не се оторизираш като потребител на този сървър...





Страници по тази тема: 1 | 2 | >> (покажи всички)
*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.