PDA

View Full Version : ShellExecute و متن اصلی ایمیل



spicirmkh
شنبه 26 شهریور 1384, 15:24 عصر
من برنامه ارسال ایمیل با دستور ShellExecute می فرستم
اما متن اصلی ایمیل من بصورت Memo است ونمی تواند برنامه را بصورت Memo بپذیرد اگر String بگیرم
انتهای خط را قبول نمی کند و همه خصوط را به هم می چسباند چه کنم




const
LF = char(10)+char(13) ;
var
Mto, Msub, mail: string;
Mbody : string ;
begin

Msub := 'Re: '+ dataM.DBemailSubject.Value ;

Mbody := Mbody+'From :'+ datam.DBemailFrom.Value+Lf;
Mbody := Mbody+'To :'+ datam.DBemailto.Value+Lf;
Mbody := Mbody+ datam.DBemailContents.Value ;

mail := 'mailto:'+ Mto +
'?subject='+Msub+
//'&cc=me@me.com' +
'&body='+ Mbody;
ShellExecute(Self.Handle, 'open', PChar(mail), nil, nil, SW_SHOWNORMAL);
end;

babak869
چهارشنبه 28 شهریور 1386, 17:38 عصر
منم همین مشکلو دارم

Mahmood_M
چهارشنبه 28 شهریور 1386, 17:54 عصر
راستش من جواب رو درست نمی دونم ولی میخواستم بدونم که کسی از دوستان تا حالا به این صورت ایمیلی ارسال کرده یا نه ؟! ، چون من هر بار خواستم بفرستم فقط برنامه Outlook رو اجرا کرده !!
آیا باید حتما در Outlook یک اکانت بسازم تا با اون ایمیل رو بفرسته یا فقط همسن ShellExecute کافیه ؟! اگه کسی از دوستان این کار رو انجام داده ممنون میشم اگه توضیح بده ...

و اما جواب :
میشه در هنگام اتصال خطوط Memo ( با + ) بینشون از " 13# " استفاده کرد ! البته امتحان نکردم و نمی دونم که قبول می کنه یا نه ...

به هر حال منتظر جواب دوستان هستم ...

موفق باشید ...

babak869
چهارشنبه 28 شهریور 1386, 18:57 عصر
خیر با #13 هم جواب نمیده .
چند روش ارسال ای میل :



Code:

uses ShellAPI;
procedure InviaEMail ( const Indirizzo, IndirizziCC, Oggetto, Testo: string);
var
Comando: String;
begin
Comando := 'mailto:' + Indirizzo + '?subject=' + Oggetto + '&cc=' + IndirizziCC + '&body=' + Testo;
if (ShellExecute(0, 'open', PChar(Comando), '', '', SW_SHOWNORMAL) <= 32)
then
ShowMessage('Errore nell''invio della e-mail.');
end;
//////////

procedure TForm1.Button1Click(Sender: TObject);
begin
InviaEMail ( 'your mail@yahoo.com', 'IndirizziCC@acui.spedire', 'Oggetto della e-mail', 'Testo della e-mail');
end;

=========================
const
LF = char(10)+char(13) ;
var
Mto, Msub, mail: string;
Mbody : string ;
begin

Msub := 'Re: '+ dataM.DBemailSubject.Value ;

Mbody := Mbody+'From :'+ datam.DBemailFrom.Value+Lf;
Mbody := Mbody+'To :'+ datam.DBemailto.Value+Lf;
Mbody := Mbody+ datam.DBemailContents.Value ;

mail := 'mailto:'+ Mto +
'?subject='+Msub+
//'&cc=me@me.com' +
'&body='+ Mbody;
ShellExecute(Self.Handle, 'open', PChar(mail), nil, nil, SW_SHOWNORMAL);
end;
==============================


موفق باشید

Mahmood_M
چهارشنبه 28 شهریور 1386, 19:06 عصر
آقای احدی مشکل اینجاست که چیزی ارسال نمی شه و فقط برنامه Outlook اجرا میشه ... !!
فقط بگید که آیا خودتون با کد دومی که گذاشتید ( ShellExecute ) ایمیلی ارسال کردید یا نه ؟! ( بدون اجرا شدن برنامه Outlook ) ، فقط بگید ارسال کردید یا نه ، اگه شدنی باشه پس پیداش میکنم ( مشکل رو ) ...

با تشکر ...

babak869
چهارشنبه 28 شهریور 1386, 19:22 عصر
آقای احدی مشکل اینجاست که چیزی ارسال نمی شه و فقط برنامه Outlook اجرا میشه ... !!
فقط بگید که آیا خودتون با کد دومی که گذاشتید ( ShellExecute ) ایمیلی ارسال کردید یا نه ؟! ( بدون اجرا شدن برنامه Outlook ) ، فقط بگید ارسال کردید یا نه ، اگه شدنی باشه پس پیداش میکنم ( مشکل رو ) ...

با تشکر ...

خیر
تمامی این کدها از ارسال کننده ایمیل Default ویندوز استفاده میکنه نه اینکه فقط از OutLook استفاده کنه . مثلا اگه شما برنامه مدیریت ای میل Mozila ThunderBird رو نصب کرده باشید و بصورت پیش فرض انتخاب شده باشه کد بالا برنامه مذکور رو باز میکنه

موفق باشید

mostafa_khorasani
یک شنبه 24 آبان 1388, 15:43 عصر
سلام
منم این مشکل داشتم
ببین میتونی همه اینارو خط به خط
با telnet بفرستی . حتما کار میکنه
یکار دیگه هم میتونی بکنی
یه فایل bat درست کن
بعد آدرسشو بزار تو ShellExecute
من هردوکارو کردم. جواب میده:لبخند: