۱۸-خرداد-۱۳۸۵, ۰۵:۰۱:۳۴
۲۰-خرداد-۱۳۸۵, ۰۸:۲۳:۵۲
برای فرستادن mail باید از idsmtp از کامپوننتهای indyclientاستفاده کنی وبرای متن mailاز idmessageواگه با فایل خواستی بفرستی idattechment
برای چک کردن mailهم باید از pop3 استفاده کنی
این برای ارسال mail هستش خیلی وقت پیش نوشتم ببین به دردت میخوره به یه کمی تغییر احتیاج داره فکر کنم
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdMessage, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP, ToolWin, ComCtrls;
type
TForm1 = class(TForm)
ToolBar1: TToolBar;
Button1: TButton;
IdSMTP1: TIdSMTP;
IdMessage1: TIdMessage;
Memo1: TMemo;
Label1: TLabel;
Edit1: TEdit;
Button2: TButton;
Label2: TLabel;
Edit2: TEdit;
OpenDialog1: TOpenDialog;
Label3: TLabel;
Edit3: TEdit;
StatusBar1: TStatusBar;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
idmessage1.Body.Add(memo1.Text);
idmessage1.From.Text:='ghoroobe_delangiz2002@yahoo.com.com';
idmessage1.Recipients.EMailAddresses:=edit1.Text;
idmessage1.Subject:='salam';
if edit2.Text>''then
begin
tidattachment.Create(idmessage1.MessageParts,edit1.Text);
end;
idsmtp1.Host:= edit3.Text;
idsmtp1.Connect();
statusbar1.SimpleText:='connect to server';
try
idsmtp1.Send(idmessage1);
statusbar1.SimpleText:='sending mail...';
finally
idsmtp1.Disconnect;
statusbar1.SimpleText:='done!';
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if opendialog1.Execute then
edit2.Text:=opendialog1.FileName;
end;
//for yahoo hostname==mx1.mail.yahoo.com//
end.
برای چک کردن mailهم باید از pop3 استفاده کنی
این برای ارسال mail هستش خیلی وقت پیش نوشتم ببین به دردت میخوره به یه کمی تغییر احتیاج داره فکر کنم
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdMessage, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP, ToolWin, ComCtrls;
type
TForm1 = class(TForm)
ToolBar1: TToolBar;
Button1: TButton;
IdSMTP1: TIdSMTP;
IdMessage1: TIdMessage;
Memo1: TMemo;
Label1: TLabel;
Edit1: TEdit;
Button2: TButton;
Label2: TLabel;
Edit2: TEdit;
OpenDialog1: TOpenDialog;
Label3: TLabel;
Edit3: TEdit;
StatusBar1: TStatusBar;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
idmessage1.Body.Add(memo1.Text);
idmessage1.From.Text:='ghoroobe_delangiz2002@yahoo.com.com';
idmessage1.Recipients.EMailAddresses:=edit1.Text;
idmessage1.Subject:='salam';
if edit2.Text>''then
begin
tidattachment.Create(idmessage1.MessageParts,edit1.Text);
end;
idsmtp1.Host:= edit3.Text;
idsmtp1.Connect();
statusbar1.SimpleText:='connect to server';
try
idsmtp1.Send(idmessage1);
statusbar1.SimpleText:='sending mail...';
finally
idsmtp1.Disconnect;
statusbar1.SimpleText:='done!';
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if opendialog1.Execute then
edit2.Text:=opendialog1.FileName;
end;
//for yahoo hostname==mx1.mail.yahoo.com//
end.
۲۶-خرداد-۱۳۸۵, ۰۱:۰۱:۱۱
برای دریافت mailاز یک سرور باید ازidpop3استفاده کنی
procedure TForm1.Button1Click(Sender: TObject);
var FMsgCount: integer;
var intIndex: integer;
var i: integer;
begin
memo1.Clear;
idPOP31.Host := 'pop.mail.de';
//idPOP.Port := Pop3ServerPort;
idPOP31.Username := 'mustermann@provider.de';
idPOP31.Password := 'xyzpasswort';
idPOP31.Connect;
FMsgCount := idPOP31.CheckMessages;
label2.Caption:=inttostr(FMsgCount);
//for i:=1 to FMsgCount do
//begin
//POP.Retrieve(i, IdMessage1);
idPOP31.Retrieve(strtoint(edit1.text), IdMessage1);
for intIndex := 0 to Pred(IdMessage1.MessageParts.Count) do begin
if (IdMessage1.MessageParts.Items[intIndex] is TIdAttachment) then
begin
memo1.lines.add(TIdAttachment(IdMessage1.MessageParts.Items[intIndex]).Filename);
end;
end;
//end;
idpop31.disconnect;
end;
end.
procedure TForm1.Button1Click(Sender: TObject);
var FMsgCount: integer;
var intIndex: integer;
var i: integer;
begin
memo1.Clear;
idPOP31.Host := 'pop.mail.de';
//idPOP.Port := Pop3ServerPort;
idPOP31.Username := 'mustermann@provider.de';
idPOP31.Password := 'xyzpasswort';
idPOP31.Connect;
FMsgCount := idPOP31.CheckMessages;
label2.Caption:=inttostr(FMsgCount);
//for i:=1 to FMsgCount do
//begin
//POP.Retrieve(i, IdMessage1);
idPOP31.Retrieve(strtoint(edit1.text), IdMessage1);
for intIndex := 0 to Pred(IdMessage1.MessageParts.Count) do begin
if (IdMessage1.MessageParts.Items[intIndex] is TIdAttachment) then
begin
memo1.lines.add(TIdAttachment(IdMessage1.MessageParts.Items[intIndex]).Filename);
end;
end;
//end;
idpop31.disconnect;
end;
end.
۲۴-تير-۱۳۸۵, ۰۷:۵۵:۱۲
جدیدا انگار پورت 25 را بستن
من هرچی میل تو اصفهان و قم با پورت 25 فرستادم خطای 110053 می ده
من هرچی میل تو اصفهان و قم با پورت 25 فرستادم خطای 110053 می ده
۲۲-دى-۱۳۸۹, ۱۰:۴۵:۰۱
اقا من با این idsmtp هرچی که سابجکتش فارسی باشه میفرسته خودش تبدیل میکنه به استاندارد ISO-xyz (عددش را یادم نیست ) هرچی به زبون خوش میگم بابا استاندارد سابجکتت utf-8 باید باشه ، دیوانه خودش ورمیداره تبدیل میکنه میفرسته اونطرف هم دیگه تکلیف کاراکترهای عجیب غریبش مشخصه
چه کنم ؟
هدری که بهم میده اینطوریه :
آدرسهای ایمیل تغییر داده شدن که این رباتها بیچارم نکنن
چه کنم ؟
کد:
msg:=TIdMessage.Create(nil);
msg.CharSet:='utf-8';
msg.ContentType:='text/html';
Msg.ContentTransferEncoding := 'base64';
msg.Encoding:=meMIME;
Subj:=UTF8Encode ('سابجکت');
msg.Subject:= subj;
Msg.ContentTransferEncoding := '7bit'; // <- RAW
هدری که بهم میده اینطوریه :
کد:
Return-path: <admin@alaaaat.ir>
Envelope-to: admin@alvvvvvt.ir
Delivery-date: Wed, 12 Jan 2011 07:31:41 +0100
Received: from [204.145.90.125] (helo=comp)
by server8g.axspace.com with esmtpa (Exim 4.69)
(envelope-from <admin@aaaaalt.ir>)
id 1PcuFA-0003Yv-TI
for admin@alaaaaaat.ir; Wed, 12 Jan 2011 07:31:41 +0100
From: admin@alddddt.ir
Subject: =?ISO-8859-1?Q?=D3=C7=C8=CC=98=CA?=
To: admin@alaaaaaaat.ir
Content-Type: text/html;
charset="utf-8"
Date: Wed, 12 Jan 2011 09:58:09 +0330
X-Priority: 1
X-Library: Indy 9.00.10
Memo1
تست متن
۲۲-دى-۱۳۸۹, ۱۳:۲۰:۵۹
مشکل از از کامپوننت نیست ؛
اگه سابجکت فارسی باسه به صورت کد شده میاد واست (اونی که میزنی utf8 ؛ واسه اینه که سرور بفهمه )
در هر حال باید بعد از دریافت هدر سند شده از سرور ؛ خودت تو سمت کلاینت تبدیلش کنی (دیکدش کنی) به متن مورد نظر !!
اگه سابجکت فارسی باسه به صورت کد شده میاد واست (اونی که میزنی utf8 ؛ واسه اینه که سرور بفهمه )
در هر حال باید بعد از دریافت هدر سند شده از سرور ؛ خودت تو سمت کلاینت تبدیلش کنی (دیکدش کنی) به متن مورد نظر !!
۲۲-دى-۱۳۸۹, ۱۳:۳۷:۲۷
(۲۲-دى-۱۳۸۹, ۱۳:۲۰:۵۹)babyy نوشته است: [ -> ]مشکل از از کامپوننت نیست ؛
اگه سابجکت فارسی باسه به صورت کد شده میاد واست (اونی که میزنی utf8 ؛ واسه اینه که سرور بفهمه )
در هر حال باید بعد از دریافت هدر سند شده از سرور ؛ خودت تو سمت کلاینت تبدیلش کنی (دیکدش کنی) به متن مورد نظر !!
کلاینت فقط میفرسته ، جائی که بشه درستش کرد که توی این کامپوننت های indy ندیدم
تنها راه موجود که فعلا ظاهرا جوابگو هست ( ولی آب انار لازم داره تا بنویسم ) اینه که بیام کدهای معادل را پیدا کنم
مثلا
کد:
=D8=A7=20 ا
=D8=A8=20 ب
=D8=A9=20 ة
=D9=BE=20 پ
=D8=AA=20 ت
=D8=AB=20 ث
=D8=AC=20 ج
کد:
Subj:='=?UTF-8?Q?=D8=AA=D8=B3=D8=AA?=';
پس یه راه حل سریع بهم بگین :((
پیوست : =20 ها را از اخر باید حذف کنیم ، ( کاراکتر فاصله هست ، که من برای تست کارهام گذاشتم)
۲۲-دى-۱۳۸۹, ۱۶:۲۶:۱۰
خب مجبور شدم بنویسم :)
مردشون این باگ indy smtp را ببرن
مردشون این باگ indy smtp را ببرن
کد:
function ReplaceStringtoUTF8( str:string):string;
var
i,j:integer;
tempstr:string;
begin
Tempstr:='=?UTF-8?Q?';
j:=length(Str);
for i:=0 to j do
begin
اینها حروف الفبای فارسی به ترتیب هستند که چون کپی پیست کردم توی این ادیتور سایت بهم ریختن ، حسش نیست درستشون کنم ، کارتون گیر بود به این سورس خودتون به ترتیب فقط حروف الفبای فارسی را جایگزین کنید.
if Str[i]= 'Ç' then TempStr:=TempStr+'=D8=A7';
if Str[i]= 'È' then TempStr:=TempStr+'=D8=A8';
if Str[i]= '' then TempStr:=TempStr+'=D9=BE';
if Str[i]= 'Ê' then TempStr:=TempStr+'=D8=AA';
if Str[i]= 'Ë' then TempStr:=TempStr+'=D8=AB';
if Str[i]= 'Ì' then TempStr:=TempStr+'=D8=AC';
if Str[i]= '' then TempStr:=TempStr+'=DA=86';
if Str[i]= 'Í' then TempStr:=TempStr+'=D8=AD';
if Str[i]= 'Î' then TempStr:=TempStr+'=D8=AE';
if Str[i]= 'Ï' then TempStr:=TempStr+'=D8=AF';
if Str[i]= 'Ð' then TempStr:=TempStr+'=D8=B0';
if Str[i]= 'Ñ' then TempStr:=TempStr+'=D8=B1';
if Str[i]= 'Ò' then TempStr:=TempStr+'=D8=B2';
if Str[i]= 'Ž' then TempStr:=TempStr+'=DA=98';
if Str[i]= 'Ó' then TempStr:=TempStr+'=D8=B3';
if Str[i]= 'Ô' then TempStr:=TempStr+'=D8=B4';
if Str[i]= 'Õ' then TempStr:=TempStr+'=D8=B5';
if Str[i]= 'Ö' then TempStr:=TempStr+'=D8=B6';
if Str[i]= 'Ø' then TempStr:=TempStr+'=D8=B7';
if Str[i]= 'Ù' then TempStr:=TempStr+'=D8=B8';
if Str[i]= 'Ú' then TempStr:=TempStr+'=D8=B9';
if Str[i]= 'Û' then TempStr:=TempStr+'=D8=BA';
if Str[i]= 'Ý' then TempStr:=TempStr+'=D9=81';
if Str[i]= 'Þ' then TempStr:=TempStr+'=D9=82';
if Str[i]= '˜' then TempStr:=TempStr+'=DA=A9';
if Str[i]= '' then TempStr:=TempStr+'=DA=AF';
if Str[i]= 'á' then TempStr:=TempStr+'=D9=84';
if Str[i]= 'ã' then TempStr:=TempStr+'=D9=85';
if Str[i]= 'ä' then TempStr:=TempStr+'=D9=86';
if Str[i]= 'æ' then TempStr:=TempStr+'=D9=88';
if Str[i]= 'å' then TempStr:=TempStr+'=D9=87';
if Str[i]= 'í' then TempStr:=TempStr+'=DB=8C';
IF str[i]= 'í' THEN TempStr:=TempStr+'=D9=8A';
if Str[i]= ' ' then TempStr:=TempStr+'=20';
if Str[i]= '0' then TempStr:=TempStr+'=30';
if Str[i]= '1' then TempStr:=TempStr+'=31';
if Str[i]= '2' then TempStr:=TempStr+'=32';
if Str[i]= '3' then TempStr:=TempStr+'=33';
if Str[i]= '4' then TempStr:=TempStr+'=34';
if Str[i]= '5' then TempStr:=TempStr+'=35';
if Str[i]= '6' then TempStr:=TempStr+'=36';
if Str[i]= '7' then TempStr:=TempStr+'=37';
if Str[i]= '8' then TempStr:=TempStr+'=38';
if Str[i]= '9' then TempStr:=TempStr+'=39';
if LowerCase(Str[i])= 'a' then TempStr:=TempStr+'a';
if LowerCase(Str[i])= 'b' then TempStr:=TempStr+'b';
if LowerCase(Str[i])= 'c' then TempStr:=TempStr+'c';
if LowerCase(Str[i])= 'd' then TempStr:=TempStr+'d';
if LowerCase(Str[i])= 'e' then TempStr:=TempStr+'e';
if LowerCase(Str[i])= 'f' then TempStr:=TempStr+'f';
if LowerCase(Str[i])= 'g' then TempStr:=TempStr+'g';
if LowerCase(Str[i])= 'h' then TempStr:=TempStr+'h';
if LowerCase(Str[i])= 'i' then TempStr:=TempStr+'i';
if LowerCase(Str[i])= 'j' then TempStr:=TempStr+'j';
if LowerCase(Str[i])= 'k' then TempStr:=TempStr+'k';
if LowerCase(Str[i])= 'l' then TempStr:=TempStr+'l';
if LowerCase(Str[i])= 'm' then TempStr:=TempStr+'m';
if LowerCase(Str[i])= 'n' then TempStr:=TempStr+'n';
if LowerCase(Str[i])= 'o' then TempStr:=TempStr+'o';
if LowerCase(Str[i])= 'p' then TempStr:=TempStr+'p';
if LowerCase(Str[i])= 'q' then TempStr:=TempStr+'q';
if LowerCase(Str[i])= 'r' then TempStr:=TempStr+'r';
if LowerCase(Str[i])= 's' then TempStr:=TempStr+'s';
if LowerCase(Str[i])= 't' then TempStr:=TempStr+'t';
if LowerCase(Str[i])= 'u' then TempStr:=TempStr+'u';
if LowerCase(Str[i])= 'v' then TempStr:=TempStr+'v';
if LowerCase(Str[i])= 'w' then TempStr:=TempStr+'w';
if LowerCase(Str[i])= 'x' then TempStr:=TempStr+'x';
if LowerCase(Str[i])= 'y' then TempStr:=TempStr+'y';
if LowerCase(Str[i])= 'z' then TempStr:=TempStr+'z';
if LowerCase(Str[i])= '"' then TempStr:=TempStr+'"';
if LowerCase(Str[i])= '=' then TempStr:=TempStr+'=';
if LowerCase(Str[i])= '+' then TempStr:=TempStr+'+';
if LowerCase(Str[i])= '!' then TempStr:=TempStr+'!';
if LowerCase(Str[i])= '@' then TempStr:=TempStr+'@';
if LowerCase(Str[i])= '#' then TempStr:=TempStr+'#';
if LowerCase(Str[i])= '$' then TempStr:=TempStr+'$';
if LowerCase(Str[i])= '%' then TempStr:=TempStr+'%';
if LowerCase(Str[i])= '&' then TempStr:=TempStr+'&';
if LowerCase(Str[i])= '*' then TempStr:=TempStr+'*';
if LowerCase(Str[i])= '(' then TempStr:=TempStr+'(';
if LowerCase(Str[i])= ')' then TempStr:=TempStr+')';
end;
tempStr := tempStr +'?=';
Result := tempstr;
end;
۲۳-دى-۱۳۸۹, ۰۰:۳۷:۳۹
اين باگ نيست کدينگ UTF-8 هست که بايد به Ascii ديکد بشه
توابع آماده هم فکر کنم فراوون باشه, يا شايد تو دلفی امکان اين باشه تا کاراکتر انکدينگ رو (تو يونيت يا فورم) رو روی utf-8 گذاشت
توابع آماده هم فکر کنم فراوون باشه, يا شايد تو دلفی امکان اين باشه تا کاراکتر انکدينگ رو (تو يونيت يا فورم) رو روی utf-8 گذاشت
۲۳-دى-۱۳۸۹, ۱۵:۴۳:۴۰
(۲۳-دى-۱۳۸۹, ۰۰:۳۷:۳۹)CRazYFULL نوشته است: [ -> ]اين باگ نيست کدينگ UTF-8 هست که بايد به Ascii ديکد بشه
توابع آماده هم فکر کنم فراوون باشه, يا شايد تو دلفی امکان اين باشه تا کاراکتر انکدينگ رو (تو يونيت يا فورم) رو روی utf-8 گذاشت
باگ یا شاید کمبود امکانات indy هست
دلفی تابع UTF8Encode و UTF8decode را داره ، ولی در مورد سابجکت فارسی کارنکرد ( روی body کار میکنه )
۲۵-دى-۱۳۸۹, ۱۱:۳۴:۳۳
شما از دلفی چند استفاده میکنین؟
از دلفی 2009 به بعد پشتیبانی کامل از unicode شده و این مشکلات وجود نداره
از دلفی 2009 به بعد پشتیبانی کامل از unicode شده و این مشکلات وجود نداره