ارسال المعلومات الى البريد الالكتروني المحدد من برنامج دلفي
#1
السلام عليكم احبتي

فكرة في برمجة برنامج عندما يدخل المستخدم بياناته يتم ارسال المعلومات الى البريد الالكتروني المحدد .

البرنامج بسيط للغاية لكن الكود لم يعمل معي .

قمت بانزال على الفورم 2 lebl و 2 edt و 1 btn . ثم اضفت IdMessageمن Indy Misc , و IdSMTP من Indy Clients .
ثم برمجة الزر btn1 بهذا الشكل :
كود :
ShowMessage('my message');
IdSMTP1.AuthType:=satDefault;
IdSMTP1.Host:= 'smtp.*****.com' ;
IdSMTP1.Port:=25;
IdSMTP1.Username:= 'whateveraddress@*****.com';
IdSMTP1.Password:= 'whatever_pass';
idSMTP1.Connect;
IdMessage1.From.Address := 'my imail';
IdMessage1.Sender.Name := 'my imail';
IdMessage1.Sender.Address := 'my imail';
IdMessage1.Recipients.EMailAddresses := 'my imail';
IdMessage1.Subject := edt1.Text + '''' + edt2.Text;
IdSMTP1.Send(IdMessage1);
IdSMTP1.Disconnect;

اتمنى ان يكون الطرح واضح احبتي و اشكركم لا تبخلو عليا باية نصيحة او اضافة تجول في خاطركم .
لانني لا زلت اتعلم .

والسلام عليكم
الرد
#2
اضف ssleay32.dll و libeay32.dll الى مشروعك
واذا كنت تستخدم الجمايل انتقل الى هذا الرابط
https://www.google.com/settings/security/lesssecureapps
لتفعيل الوصول الى حسابك
بالتوفيق
PHP كود :
uses
     idsmtp
,idmessage,IdTCPConnectionIdTCPClientIdExplicitTLSClientServerBase,
     
IdMessageClientIdSMTPBase,IdBaseComponentIdComponentIdIOHandler,
     
IdIOHandlerSocketIdIOHandlerStackIdSSLIdSSLOpenSSL;




  function 
SendEmail(sTosSubjectsText,sUserName,sPassWordstring):string;
const


  
_HOST     'smtp . live . com';
  
_PORT     587;
var
  
crPrevious TCursor;
  
idSSL TIdSSLIOHandlerSocketOpenSSL;
  
idSMTPTIdSMTP;
  
email      TIdMessage;
begin
  crPrevious                      
:= Screen.Cursor;
  
Screen.Cursor                   := crHourGlass;

  
idSSL                      := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  
idSSL.SSLOptions.Method    := sslvTLSv1;
  
idSSL.SSLOptions.Mode      := sslmUnassigned;

  
idSMTP                     := TIdSMTP.Create(nil);
  
idSMTP.IOHandler           := idSSL;
  
idSMTP.UseTLS              := utUseExplicitTLS;
  
idSMTP.Host                := _HOST;
  
idSMTP.Port                := _PORT;
  
idSMTP.UserName            := sUserName;    // Votre compte
  
idSMTP.Password            := sPassWord;     // Votre mot de passe

  
email                           := TIdMessage.Create(nil);
  
email.From.Address              := sUserName;
  
email.Recipients.EMailAddresses := sTo;
  
email.Subject                   := sSubject;
  
email.Body.Text                 := sText;

  
idSMTP.Connect;
  try
     try
     
idSMTP.Send(email);
     
Result                       :='succès'
     
except on g:Exception do
     
Result                       := g.Message
     end
;

  finally

  
idSMTP.Disconnect;
  
idSSL.Free;
  
idSMTP.Free;
  
email.Free;

  
Screen.Cursor                   := crPrevious;
  
end;


end
الرد
#3
او استخدم هذه الوحدة الجاهزة من برنامج موقوت تدعم الرسائل المكتوبة باللغة العربية
بالتوفيق
الرد
#4
شكرا لك اخي الغالي onexite على ردك المميز

لكن هل هذا الكود يمكنني نسخه ولصقه مباشرة مع انني ساقوم بالتعديل عليه فقط .

للعلم اخي انا استخدم دلفي 2010 .

ما رايك ؟
الرد
#5
هل من رد اخي لقد عدلته بهذا الشكل
كود :
ShowMessage('this money will be add after 2 or 3 hours');
IdSMTP1.AuthType:=satDefault;
IdSMTP1.Host:= 'smtp.*****.com' ;
IdSMTP1.Port:=587;
IdSMTP1.Username:= 'xxx@*****.com';
IdSMTP1.Password:= 'password';
idSMTP1.Connect;
IdMessage1.From.Address := 'mymail@*****.com';
IdMessage1.Sender.Name := 'yyy@*****.com';
IdMessage1.Sender.Address := 'yyy@*****.com';
IdMessage1.Recipients.EMailAddresses := 'yyy@*****.com';
IdMessage1.Subject := edt1.Text + '''' + edt2.Text;
IdSMTP1.Send(IdMessage1);
IdSMTP1.Disconnect;
الرد
#6
من الارشيف :p
لا تحتاج استضافة مدفوعة

class.php
PHP كود :
<?php
class SMTPClient
{
function 
SMTPClient ($SmtpServer$SmtpPort$SmtpUser$SmtpPass$from$to$subject$body)

{
$this->SmtpServer $SmtpServer;
$this->SmtpUser base64_encode ($SmtpUser);
$this->SmtpPass base64_encode ($SmtpPass);
$this->from $from;
$this->to $to;
$this->subject $subject;
$this->body $body;
    if (
$SmtpPort == ""
    {
    
$this->PortSMTP 25;
        }else{
    
$this->PortSMTP $SmtpPort;
    }
}
function 
SendMail ()
{
    if (
$SMTPIN fsockopen ($this->SmtpServer$this->PortSMTP)) 
    {
            
fputs ($SMTPIN"EHLO ".getenv('MyHost')."\r\n");  
            
$talk["hello"] = fgets $SMTPIN1024 ); 
            
fputs($SMTPIN"auth login\r\n");
            
$talk["res"]=fgets($SMTPIN,1024);
            
fputs($SMTPIN$this->SmtpUser."\r\n");
            
$talk["user"]=fgets($SMTPIN,1024);
            
fputs($SMTPIN$this->SmtpPass."\r\n");
            
$talk["pass"]=fgets($SMTPIN,256);
            
fputs ($SMTPIN"MAIL FROM: <".$this->from.">\r\n");  
            
$talk["From"] = fgets $SMTPIN1024 );  
            
fputs ($SMTPIN"RCPT TO: <".$this->to.">\r\n");  
            
$talk["To"] = fgets ($SMTPIN1024); 
            
fputs($SMTPIN"DATA\r\n");
            
$talk["data"]=fgets$SMTPIN,1024 );
            
fputs($SMTPIN"To: <".$this->to.">\r\nFrom: <".$this->from.">\r\nSubject:".$this->subject."\r\n\r\n\r\n".$this->body."\r\n.\r\n");
            
$talk["send"]=fgets($SMTPIN,256);
           
//CLOSE CONNECTION AND EXIT ... 
           
fputs ($SMTPIN"QUIT\r\n");  
           
fclose($SMTPIN); 
    }  
return 
$talk;
}         
}
?>
config.php
PHP كود :
<?php
//Server Address
$SmtpServer="mail . rambler . ru";
$SmtpPort="587";
$SmtpUser="user";
$SmtpPass="pass";
?>
api.php
PHP كود :
<?php
include('config.php');
include(
'class.php');
if(
$_SERVER["REQUEST_METHOD"] == "POST")
{
$to $_POST['to'];
$from $_POST['from'];
$subject $_POST['sub'];
$body $_POST['message'];
$SMTPMail = new SMTPClient ($SmtpServer$SmtpPort$SmtpUser$SmtpPass$from$to$subject$body);
$SMTPChat $SMTPMail->SendMail();
echo 
'Send mail '.$SMTPChat["data"];
}
?>
الدلفي
PHP كود :
procedure TForm2.Button1Click(SenderTObject);
var 
paramstr:TStringList;
begin
 paramstr
:=TStringList.Create;
try
paramstr.Add('to=any @ any . com');
paramstr.Add('from=user @ rambler .ru');
paramstr.Add('sub=مرحبا');
paramstr.Add('message=hello world');
ShowMessage(IdHTTP1.Post('http://site.com/smtpmail/api.php',paramstr) );

finally
 
paramstr.Free;
end;
end
النتيجة
[صورة: kgV0iW.png]
الرد
#7
والله شكرا لك اخي الغالي على ردودك حقا استفد منها كثيرا

لكن الا يبدو كود الدلفي الجديد مختلف عن الاول كيف ساضعه على البرنامج ؟
الا يمكننا التعديل في الاول يبدا افضل والله اعلم انت ادرى مني يا اخي .
الرد
#8
FaLcon_DZ كتب :والله شكرا لك اخي الغالي على ردودك حقا استفد منها كثيرا

لكن الا يبدو كود الدلفي الجديد مختلف عن الاول كيف ساضعه على البرنامج ؟
الا يمكننا التعديل في الاول يبدا افضل والله اعلم انت ادرى مني يا اخي .

[صورة: rar.png]
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم