100分求教,关于发送邮件的问题 ( 积分: 100 )

  • 主题发起人 主题发起人 kanGaXX
  • 开始时间 开始时间
K

kanGaXX

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手请帮帮忙吧,我急死了,我需要做一个如见可以发送网页,要求别人收到邮件时可以直接看见网页(当然他可以设置mime=text,他不要看不是我的事),请教有什么控件,或者软件可以实现这个功能,我试过一些发送邮件的空间,例如indy,不过它会把html代码直接发给别人,别人看见的是<body><tr>测试</tr></body>,这样子的。我希望他看见网页。怎么办?
 
各位高手请帮帮忙吧,我急死了,我需要做一个如见可以发送网页,要求别人收到邮件时可以直接看见网页(当然他可以设置mime=text,他不要看不是我的事),请教有什么控件,或者软件可以实现这个功能,我试过一些发送邮件的空间,例如indy,不过它会把html代码直接发给别人,别人看见的是<body><tr>测试</tr></body>,这样子的。我希望他看见网页。怎么办?
 
var
idtTextPart:TIdText;

.
.
.

IdMsgSend. Clear;

IdMsgSend.ContentType := 'Multipart/Alternative';


// add a plain text message part

idtTextPart:=TIdText.Create(IdMsgSend.MessageParts,nil);
idtTextPart.ContentType:='text/plain';
idtTextPart.Body.Add('This is the plain part of the message.');


// add the HTML message part

idtTextPart:= TIdText.Create(IdMsgSend.MessageParts,nil);
[red]idtTextPart.ContentType := 'text/html'; [/red]
idtTextPart.Body.add('');
idtTextPart.Body.add('Testing...
');
idtTextPart.Body.add('Testing...
');
idtTextPart.Body.add('
Testing...
');
idtTextPart.Body.add('');


IdMsgSend.From.Address := 'me@mycompany.com';
IdMsgSend.From.Name := 'Me';

IdMsgSend.Sender.Address := 'me@mycompany.com';
IdMsgSend.Sender.Name := 'Me';


// add the recipients

IdMsgSend.Recipients.clear;
with IdMsgSend.Recipients.Add do Address := 'address1@somecompany.com';
with IdMsgSend.Recipients.Add do Address := 'address2@somecompany.com';


IdMsgSend.Subject := 'Some Subject';

// add an attachment
TIdAttachment.Create(IdMsgSend.MessageParts, 'c:/attach.bmp');


{SMTP Setup}
SMTP.Host := 'smtp.isp.com';
SMTP.Port := 25;

try
try
{now we send the message}
SMTP.Connect;

SMTP.Send(IdMsgSend);

except
on e: Exception do
ShowMessage(e.message);
end;

finally
SMTP.Disconnect;
end;

showmessage('Message Sent');

这是一个带附件的html例子,你注意红色部分,它标明了邮件格式.
 
对了,忘记说了
idtTextPart.Body.add('');
idtTextPart.Body.add('Testing...
');
idtTextPart.Body.add('Testing...
');
idtTextPart.Body.add('
Testing...
');
idtTextPart.Body.add('');
这几句你可以替换成标准html的代码试试,因为我这个只是简单例子,所以没写那么复杂.
 
谢谢,我下午试一下,请教一下,这段代码用的是indy控件?
 
是啊,当然是Indy组建.你看名字也就知道了麻.Indy组建开头两个字母都是Id(如果算上第一个就是TId)
 
谢谢 大大,我照着你的程序写好后发现发送是会得到错误提示 503 bad sequence(次序) of command,另外 D6自带的程序也有这个问题,能不能告诉我这是啥道理啊?
 
....
没遇到过这个问题啊!!!!
....
 
是126邮箱,代码不多,我贴出来了(其实就是大大您写的,密码我删了,绝对没问题),没有其他的了,界面上贴了两个控件,和d6的例子一样(复制过来的)
procedure TForm1.Button1Click(Sender: TObject);
var
idtTextPart:TIdText;
begin
IdMsgSend. Clear;

IdMsgSend.ContentType := 'Multipart/Alternative';


// add a plain text message part

idtTextPart:=TIdText.Create(IdMsgSend.MessageParts,nil);
idtTextPart.ContentType:='text/plain';
idtTextPart.Body.Add('This is the plain part of the message.');


// add the HTML message part

idtTextPart:= TIdText.Create(IdMsgSend.MessageParts,nil);
idtTextPart.ContentType := 'text/html';
idtTextPart.Body.add('');
idtTextPart.Body.add('<html> <head><title>The attachment</title> </head> ');
idtTextPart.Body.add('<body> <h2>This is the attached HTML file</h2> </body> </html> ');
idtTextPart.Body.add('');
idtTextPart.Body.SaveToFile('c:/abcd.txt');


IdMsgSend.From.Address := 'lion_kangaxx@126.com';
IdMsgSend.From.Name := 'Me';

IdMsgSend.Sender.Address := 'lion_kangaxx@126.com';
IdMsgSend.Sender.Name := 'Me';


// add the recipients

IdMsgSend.Recipients.clear;
with IdMsgSend.Recipients.Add do Address := 'lion_kangaxx@hotmail.com';


IdMsgSend.Subject := 'Some Subject';

// add an attachment
TIdAttachment.Create(IdMsgSend.MessageParts, 'c:/abcd.txt');


{SMTP Setup}
SMTP.Host := 'smtp.126.com';
SMTP.Port := 25;
SMTP.AuthenticationType := atLogin;
SMTP.UserID := 'lion_kangaxx';
SMTP.Password := '{删除了}';
try
try
{now we send the message}
SMTP.Connect;

SMTP.Send(IdMsgSend);

except
on e: Exception do
ShowMessage(e.message);
end;

finally
SMTP.Disconnect;
end;

showmessage('Message Sent');
 
SMTP.AuthenticationType := atLogin;
是我增加的,否则不能发送的,126有邮件验证要求
 
谢谢大大帮忙看一下啊!
 
建议你重装一下Indy,我刚刚试过我自己的,发送没有问题.
 
谢谢大大,我用的是d6自带的indy啊,你能不能把你那个程序发给我?lion_kangaxx
@126.com,谢谢哦
 
我的程序是用于给用户发注册邮件的,涉及注册算法,不太方便发布.不过上面的代码和我的没多少区别.你看看是不是Indy的问题
 
忘记告诉你了,邮件中不能有Indy字样,很多邮件服务商都锁掉Indy的连接,因为很多人利用它写垃圾邮件发送程序(因为太容易写了)
 
好的,谢谢,问题的关键其实是发送HTML,我以前的办法是用MAPI,大大别急啊,快要可以了,搞了那么就还没有切入正题(其实我急死了)!
 
刚刚我测试了,发送成功,收到邮件,是html格式的:
Return-Path: <zqw0117@sina.com>
Delivered-To: zqw0117@mail3-78.sinamail.sina.com.cn
Received: (qmail 84797 invoked from network); 9 Nov 2005 10:30:45 -0000
Received: from unknown (HELO mx3-19.sinamail.sina.com.cn) (10.55.3.19)
by mail3-78.sinamail.sina.com.cn with SMTP; 9 Nov 2005 10:30:45 -0000
Received: (qmail 32269 invoked from network); 9 Nov 2005 10:30:47 -0000
Received: from unknown (HELO smtp.sina.com.cn) (202.108.3.176)
by mx3-19.sinamail.sina.com.cn with SMTP; 9 Nov 2005 10:30:47 -0000
X-sina-Originating-IP:[202.108.3.176]
X-sina-Originating-HELO:[smtp.sina.com.cn]
X-sina-Received-SPF:[pass]
Received: (qmail 50796 invoked from network); 9 Nov 2005 18:30:09 -0000
Received: from unknown (HELO zq) (219.140.202.95)
by smtp.sina.com.cn with SMTP; 9 Nov 2005 18:30:09 -0000
From: "Me" <zqw0117@sina.com>
Subject: Some Subject
To: zqw0117@sina.com
Content-Type: Multipart/Alternative; boundary="dSGTQlen8xSJryBabI8Om=_ZeByQbfBbQM"
MIME-Version: 1.0
Sender: Me <zqw0117@sina.com>
Date: Wed, 9 Nov 2005 18:30:23 +0800
X-Mailer: Foxmail

This is a multi-part message in MIME format

--dSGTQlen8xSJryBabI8Om=_ZeByQbfBbQM
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

This is the plain part of the message.

--dSGTQlen8xSJryBabI8Om=_ZeByQbfBbQM
Content-Type: text/html
Content-Transfer-Encoding: quoted-printable


<html> <head><title>The attachment</title> </head>=20
<body> <h2>This is the attached HTML file</h2> </body> </html>=20


--dSGTQlen8xSJryBabI8Om=_ZeByQbfBbQM--
这是邮件体(注意,我是在foxmail里面打开邮件头查看邮件全文显示的).
另外,我用的已经是Indy10了,版本不一样了,我的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
idtTextPart:TIdText;
begin
IdMsgSend. Clear;

IdMsgSend.ContentType := 'Multipart/Alternative';


// add a plain text message part

idtTextPart:=TIdText.Create(IdMsgSend.MessageParts,nil);
idtTextPart.ContentType:='text/plain';
idtTextPart.Body.Add('This is the plain part of the message.');


// add the HTML message part

idtTextPart:= TIdText.Create(IdMsgSend.MessageParts,nil);
idtTextPart.ContentType := 'text/html';
idtTextPart.Body.add('');
idtTextPart.Body.add('<html> <head><title>The attachment</title> </head> ');
idtTextPart.Body.add('<body> <h2>This is the attached HTML file</h2> </body> </html> ');
idtTextPart.Body.add('');
// idtTextPart.Body.SaveToFile('c:/abcd.txt');


IdMsgSend.From.Address := 'myemail@domain.com';
IdMsgSend.From.Name := 'Me';

IdMsgSend.Sender.Address := 'myemail@domain.com';
IdMsgSend.Sender.Name := 'Me';


// add the recipients

IdMsgSend.Recipients.clear;
with IdMsgSend.Recipients.Add do Address := 'myemail@domain.com';


IdMsgSend.Subject := 'Some Subject';

// add an attachment
// TIdAttachment.Create(IdMsgSend.MessageParts, 'c:/abcd.txt');


{SMTP Setup}
SMTP.Host := 'smtp.domain.com.cn';
SMTP.Port := 25;
//SMTP.AuthenticationType := atLogin;
SMTP.Username := 'myemail@domain.com';
SMTP.Password := '{已经删除}';
try
try
{now we send the message}
SMTP.Connect;

SMTP.Send(IdMsgSend);

except
on e: Exception do
ShowMessage(e.message);
end;

finally
SMTP.Disconnect;
end;

showmessage('Message Sent');
end;
 
谢了,先结贴,顺便问一下,indy10哪里下?可以在d6上安装吗?
 
在Indy官方站点可以下载,Delphi6必须打上Update2后才能装Indy10
http://www.atozedsoftware.com/Indy/Plus/Files.iwp
 
后退
顶部