# Native Code > برنامه نویسی در Delphi >  ارسال ایمیل از طریق دلفی 7

## دنیای دلفی

با سلام خدمت دوستان

من یک برنامه نوشته ام که مربوط به قفل نرم افزار می باشد می خواهم کد منحصر بفردی را که برنامه برای سیستم تولید می کند را پس از قرار دادن دریک فایل با فشار دادن یک کلید از طریق اینترنت به یک آدرس پستی Mail کنم .

یک برنامه هم با سورس گیر آورده ام ولی وقتی می خواهد ارسال کند Host مربوطه را پیدا نمی کند . چگونه می توانم این کار را انجام دهم .


اگر راهنمایی کنید لطف نموده اید .
 :موفق:

----------


## NOROOZY

میتوانید از دموهای خود دلفی کمک بگیرید :
..\Demos\FastNet\Pop3\pop3demo.dpr
..\Demos\FastNet\Smtp\smtpdemo.dpr
مسئله ای را که میبایست رعایت کنید مقدار دهی مقادیر خواسته شده در برنامه میباشد:
HOST : نام سایت یا هاستی که MailServer میباشد، مثلا 172.18.0.100
PORT : شماره پورتی که بعنوان POP3 استفاده میشود. ( معمولا 110 )
User ID : نام کاربری که در آن سایت دارای اکانت میباشد.
Password : کلمه رمز کاربر.

----------


## Delphi Skyline

> میتوانید از دموهای خود دلفی کمک بگیرید : 
> ..\Demos\FastNet\Pop3\pop3demo.dpr 
> ..\Demos\FastNet\Smtp\smtpdemo.dpr 
> مسئله ای را که میبایست رعایت کنید مقدار دهی مقادیر خواسته شده در برنامه میباشد: 
> HOST : نام سایت یا هاستی که MailServer میباشد، مثلا 172.18.0.100 
> PORT : شماره پورتی که بعنوان POP3 استفاده میشود. ( معمولا 110 ) 
> User ID : نام کاربری که در آن سایت دارای اکانت میباشد. 
> Password : کلمه رمز کاربر.



آقای نوروزی شرمنده . اینایی که شما گفتید ماله دلفی 5 است نه ماله دلفی 7 . در این را بطه آقای گلادیاتور بحث کردند

----------


## Delphi-Clinic

> میتوانید از دموهای خود دلفی کمک بگیرید : 
> ..\Demos\FastNet\Pop3\pop3demo.dpr 
> ..\Demos\FastNet\Smtp\smtpdemo.dpr 
> مسئله ای را که میبایست رعایت کنید مقدار دهی مقادیر خواسته شده در برنامه میباشد: 
> HOST : نام سایت یا هاستی که MailServer میباشد، مثلا 172.18.0.100 
> PORT : شماره پورتی که بعنوان POP3 استفاده میشود. ( معمولا 110 ) 
> User ID : نام کاربری که در آن سایت دارای اکانت میباشد. 
> Password : کلمه رمز کاربر.
> 			
> ...


به نظرم هنوز زود باشه راجع به مطالبی که در انها اشراف نداری صحبت کنی.
روش کار با پروتکل SMTP در دلفی 7 یا 6 یا 5 یکی است.


unit MainUnit;

interface

uses
  inifiles, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient,
  IdSMTP, ComCtrls, StdCtrls, Buttons, ExtCtrls, IdBaseComponent, IdMessage;

type
  TMailerForm = class&#40;TForm&#41;
    MailMessage&#58; TIdMessage;
    pnlTop&#58; TPanel;
    pnlBottom&#58; TPanel;
    ledHost&#58; TLabeledEdit;
    Body&#58; TMemo;
    ledAttachment&#58; TLabeledEdit;
    btnAttachment&#58; TBitBtn;
    SMTP&#58; TIdSMTP;
    ledFrom&#58; TLabeledEdit;
    ledTo&#58; TLabeledEdit;
    ledCC&#58; TLabeledEdit;
    ledSubject&#58; TLabeledEdit;
    btnSendMail&#58; TBitBtn;
    StatusMemo&#58; TMemo;
    AttachmentDialog&#58; TOpenDialog;
    procedure btnSendMailClick&#40;Sender&#58; TObject&#41;;
    procedure SMTPStatus&#40;ASender&#58; TObject; const AStatus&#58; TIdStatus;
      const AStatusText&#58; String&#41;;
    procedure btnAttachmentClick&#40;Sender&#58; TObject&#41;;
    procedure FormCreate&#40;Sender&#58; TObject&#41;;
    procedure FormClose&#40;Sender&#58; TObject; var Action&#58; TCloseAction&#41;;
  private
    procedure GetSettings;
    procedure SaveSettings;
  public
    &#123; Public declarations &#125;
  end;

var
  MailerForm&#58; TMailerForm;

implementation

&#123;$R *.dfm&#125;

procedure TMailerForm.btnSendMailClick&#40;Sender&#58; TObject&#41;;
begin
  StatusMemo.Clear;

  //setup SMTP
  SMTP.Host &#58;= ledHost.Text;
  SMTP.Port &#58;= 25;

  //setup mail message
  MailMessage.From.Address &#58;= ledFrom.Text;
  MailMessage.Recipients.EMailAddresses &#58;= ledTo.Text + ',' + ledCC.Text;

  MailMessage.Subject &#58;= ledSubject.Text;
  MailMessage.Body.Text &#58;= Body.Text;

  if FileExists&#40;ledAttachment.Text&#41; then
    TIdAttachment.Create&#40;MailMessage.MessageParts, ledAttachment.Text&#41;;

  //send mail
  try
    try
      SMTP.Connect&#40;1000&#41;;
      SMTP.Send&#40;MailMessage&#41;;
    except on E&#58;Exception do
      StatusMemo.Lines.Insert&#40;0, 'ERROR&#58; ' + E.Message&#41;;
    end;
  finally
    if SMTP.Connected then SMTP.Disconnect;
  end;

end; &#40;* btnSendMail Click *&#41;

procedure TMailerForm.SMTPStatus&#40;ASender&#58; TObject; const AStatus&#58; TIdStatus;
  const AStatusText&#58; String&#41;;
begin
  StatusMemo.Lines.Insert&#40;0,'Status&#58; ' + AStatusText&#41;;
end; &#40;* SMTP Status *&#41;

procedure TMailerForm.btnAttachmentClick&#40;Sender&#58; TObject&#41;;
begin
  if AttachmentDialog.Execute then
    ledAttachment.Text &#58;= AttachmentDialog.FileName;
end;

procedure TMailerForm.FormCreate&#40;Sender&#58; TObject&#41;;
begin
  GetSettings;
end;

procedure TMailerForm.FormClose&#40;Sender&#58; TObject; var Action&#58; TCloseAction&#41;;
begin
  SaveSettings;
end;

procedure TMailerForm.GetSettings;
var
  ini &#58; TIniFile;
begin
  Ini &#58;= TIniFile.Create&#40;ChangeFileExt&#40;Application.  ExeName,'.ini'&#41;&#41;;
  try
    ledHost.Text &#58;= ini.ReadString&#40;'SMTP','Host',''&#41;;

    ledFrom.Text &#58;= ini.ReadString&#40;'MAIL','From',''&#41;;
    ledTo.Text &#58;= ini.ReadString&#40;'MAIL','To',''&#41;;
    ledCC.Text &#58;= ini.ReadString&#40;'MAIL','CC',''&#41;;
  finally
    ini.Free;
  end;
end; &#40;* GetSettings *&#41;

procedure TMailerForm.SaveSettings;
var
  ini &#58; TIniFile;
begin
  Ini &#58;= TIniFile.Create&#40;ChangeFileExt&#40;Application.  ExeName,'.ini'&#41;&#41;;
  try
    ini.WriteString&#40;'SMTP','Host',ledHost.Text&#41  ;;

    ini.WriteString&#40;'MAIL','From',ledFrom.Text&#41  ;;
    ini.WriteString&#40;'MAIL','To',ledTo.Text&#41;;
    ini.WriteString&#40;'MAIL','CC',ledCC.Text&#41;;
  finally
    ini.Free;
  end;
end; &#40;* SaveSettings *&#41;

end.

----------


## دنیای دلفی

جناب Delphi-Clinic دست شما درد نکند و خسته باشید امکان دارد این مجموعه کدها را به صورت فایل دلفی Upload کنید . لطف می کنید .


 :موفق:

----------


## دنیای دلفی

متاسفانه این خطا را می دهد 

ERROR&#58; Socket Error # 10053
Software caused connection abort.
Status&#58; Connecting to 66.218.75.184.
Status&#58; Resolving hostname mail.yahoo.com.

این همان برنامه ای ایست که خودم داشتم ولی Host  را پیدا نمی کند .



لطف کنید راهنمایی کنید .

 :strange:  :sorry:  :موفق:

----------


## houshmand

1- باید از host استفاده کنی که pop3 و smtp را پشتیبانی کند
((ایمل های رایگان یاهو smtp را پشتیبانی نمیکنند ))
از gmail  مثلا استفاده کن  :wink:
2- به سایت http://www.delphi3000.com/  هم متوانی یک سر بزنی
در این سایت در مورد ارسال ایمیل با indy نیز مثال دارد و شرح داده

----------


## Delphi Skyline

************* ثانیا من fastnet و Indy رو می گم

منبعد مزخرف بنویسی درجا می فرستم سطل آشغال. :) 

دیگه اصلا بهت تذکر نمی دم.

دلفی کلینیک

----------


## دنیای دلفی

اگر ممکن است یک مثال بزنید که از یک Host استفاده کنم دوست عزیز شما که گفته اید از Gmail چگونه از Gmail استفاده کنم من می نویسم مثلا Mail.gmail.com یا gmail.google.com ولی باز هم جواب نمی دهد .

لطف کنید راهنمایی کنید .

 :strange:  :flower:

----------


## دنیای دلفی

حدود یک ساعت هم در http://www.delphi3000.com جستجو کردم ولی نتیجه در بر نداشت  :گیج:

----------


## vcldeveloper

> ممکن است یک مثال بزنید که از یک Host استفاده کنم دوست عزیز شما که گفته اید از Gmail چگونه از Gmail استفاده کنم من می نویسم مثلا Mail.gmail.com یا gmail.google.com ولی باز هم جواب نمی دهد .


pop.gmail.com
smtp.gmail.com
البته ممکنه حتی با وجود آدرسهای بالا هم در GMail مشکل داشته باشید، چون از Encrypted Connections استفاده می کنه.
علاوه بر مثالی که آقای Delphi-Clinic اراپه کردند، Gladiator هم در تاپیک "همه چیز درباره Indy" در این زمینه و مساپل مرتبط با اون بحث کرده.

----------


## m-khorsandi

درود

تنظیمات GMail به این صورت هست

----------


## دنیای دلفی

> تنظیمات GMail به این صورت هست


دست شما درد نکند 

این تنظیمات را باید در کامپونننتهای Indy انجام دهیم یا جای دیگر اگر امکان دارد بیشتر توضیح دهید .
 :موفق:

----------


## m-khorsandi

این تنظیمات رو برای هر نرم افزار یا Component ایی میتونی انجام بدی.
در مورد GMail این رو هم بگم که من با دلفی 5 و Component ایی به نام Fastnet نتونستم از 
GMail نامه هام رو بگیرم ولی توی ارسال مشکلی نداشت.

----------


## دنیای دلفی

من بررسی کردم ولی جواب نمی ده نمی دونم باید چیکار کنم .

لطفا راهنمایی کنید :strange:

----------


## دنیای دلفی

نمی دونم چرا این خطا را می دهد

----------


## houshmand

ویرایش شد.
دلفی کلینیک

search google :
delphi indy send mail
این هم یک مثال 
http://delphi.about.com/od/interneti.../aa020304a.htm
فقط تنها نکته ای که هست اینه که gmail هم برای فرستادن email از شما رمز را می خواهد
که برای کاری که شما می خواهید انجام بدهید زیاد مناسب نیست که رمز داخل فایل exe باشه (باید دنبال email بگردی که Encrypted Connections   نباشه که این روزها با توجه به سوء استفاده از انها -- فرستادن نامه قلابی -- کم پیدا میشه )

----------


## milani

سلام 
اگه ممکنه در مورداینکه با یاهو مسنجر ارتباط برقرار کنم منو را هنمایی کنید

----------


## محمد میرمصطفی

یه نگاهی هم به http://www.barnamenevis.org/vi...=127870#127870 بینازید plz. ممنون

----------


## دنیای دلفی

ّبرای ارسال Email بوسیله SMTP در Indy  باید SSL و authentication فعال شوند . (با استفاده از Gmail)
چگونه باید این دو خاصیت را فعال کنم .

ممنون می شوم راهنمایی کنید .

 :flower:

----------


## mtfa65

سلام دوستان.
من می خوام ایمیل ارسال کنم.
IdMsgSend
IdSMTP
(TIdSSLOptions)
من از این سه تا کامپوننت استفاده کردم و IOhandler IDsmtp  را به TIdSSLOptions نسبت دادم
host:=smtp.gmail.com
port:=465 
وارد میکنم اما موقع ارسال ایمیل پیغام زیر رو می ده. البته از دو تا dll به نام های libeay32  و   ssleay32  نیز استفاده کردم. البته این دو تا dll  رو از اینترنت دانلود کردم. و همچنین سورس برنامه رو دانلود کردم اما اونی که از اینترنت دانلود کردم باهاش ایمیل ارسال می شه و هیچ مشکلی نداره اما وقتی منم عین اون رو شبیه سازی می کنم این پیغام رو میده. لطفا اگر دلیلش رو میدونید بفرمایید. یا اگر روش دیگری بغیر از این می دونید بفرمایید.
با تشکر

Untitled.jpg

----------


## mtfa65

سلام دوستان 
من وقتی با دلفی 7 ایمیل ارسال می کنم ارسال می شه اما گه گاهی پیغام ارور میده. مثلا  error connecting with ssl  v رو میده یا مثل Time out  من می خوام بجای این ارور خود دلفی پیغام من نمایش داده بشه.
مثل : ایمیل ارسال نشد مجددا امتحان کنید.
مرسی

----------


## HAMIDyekta

شما باید از مدیریت های خطا در دلفی اسفاده کنید یه سرچی بزن تو گوگل مطالب زیادی پیدا می کنید در خصوص کنترل خطا ها در دلفی

----------


## h_mohamadi

من هم همین مشکل را دارم

----------

