Delphi发邮件用IdSMTP和IdMessage,还是不行

fullhappy 2012-07-19 11:30:01
网上下了很多案例代码,其中有个用TIdSMTP和TIdMessage,代码如下:
// 发件人地址
IdMessage1.From.Address := 'hzjrsoft@sina.com';
// 发件人姓名
IdMessage1.From.Name := 'hzjrsoft';
// 清空附件
IdMessage1.Clear;
IdMessage1.Recipients.Clear;
// 收件人地址
IdMessage1.Recipients.EMailAddresses := '9951853@qq.com';
// 主题
IdMessage1.Subject := 'TEST_JRSOFT';
// 填写正文
IdMessage1.Body.Add('明日开会通知 务必到场');
// 添加附件
TidAttachment.Create(IdMessage1.MessageParts, edt_File.Text);
// SMTP服务器
IdSMTP1.Host := 'smtp.sina.com';
// 账号
IdSMTP1.Username := 'hzjrsoft';
// 密码
IdSMTP1.Password := edt_Psw.Text;
// 登录时验证身份
IdSMTP1.AuthenticationType := atLogin;
// 连接服务器
IdSMTP1.Connect;
// 加密
IdSMTP1.Authenticate;
// 发送邮件
try
IdSMTP1.Send(IdMessage1);
finally
// 连接关闭
IdSMTP1.Disconnect;
,在IdSMTP1WorkEnd事件中ShowMessage('发送完毕!');
但是结果还是不能正常发送。
我配置的情况如上,附件是一个小的文件,最后到发送的邮箱,还是没有收到。
我发送了N次了。
请各位指点啊,谢谢大家,急!
...全文
1611 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fullhappy 2015-01-20
  • 打赏
  • 举报
回复
用IdMessage发送的邮件内容为何总是有一串如下文字: =?GB2312?B?yMvIt8jPytW79cfpv/ahow==?= To: 9951853@qq.com Content-Type: text/plain Date: Tue, 20 Jan 2015 11:13:30 +0800 然后是回车后,才是实际传入的邮件内容! 用163发的邮件,Delphi+indy控件包【IdMessage、IdSMTP】发送的邮件 之前是正常的,1月中旬后发送的邮件就如此了!
fullhappy 2013-08-02
  • 打赏
  • 举报
回复
我后来更换成INDY9控件解决的,早期的控件都存在发送邮件问题,估计是被邮件服务器拦截吧
wpdby 2012-11-20
  • 打赏
  • 举报
回复
为什么我用的时候IdSMTP1.username会报错?IdSMTP1.userid倒是没错,但是运行以后报错,我的是delphi6....求教
a442417164 2012-10-09
  • 打赏
  • 举报
回复
最经才开始用delphi。。不怎么懂。但是很高兴的学习了
fengemail8 2012-10-08
  • 打赏
  • 举报
回复
username = 完整的Email帐号试试
fullhappy 2012-07-19
  • 打赏
  • 举报
回复
你用D7 indy是哪个版本的 估计跟版本有关的
我下午用JMail,自带的例子发送也不行
kaikai_kk 2012-07-19
  • 打赏
  • 举报
回复
是不是被拦截了?

我用D7写的,一直都这么用,发送都是成功的

测试时,可以自己发给自己,如 XXOO@163.com -> XXOO@163.com
fullhappy 2012-07-19
  • 打赏
  • 举报
回复
AuthenticationType 我直接设置成atLogin,为何发送邮件后,实际QQ邮箱不能收到邮件呢,你那边有无邮箱地址,我发你的地址试下看
fullhappy 2012-07-19
  • 打赏
  • 举报
回复
我马上写好了,并且发送了,提示是成功的,跟我之前写的一样。但是就是没有发送成功。我用了我自己的163邮箱,并且都开启了POP和SMTP
kaikai_kk 2012-07-19
  • 打赏
  • 举报
回复
如果AuthenticationType:=atNone;

把if IdSMTP1.Authenticate then去掉
fullhappy 2012-07-19
  • 打赏
  • 举报
回复
你是用Delphi6写的,还是Delphi7写的
kaikai_kk 2012-07-19
  • 打赏
  • 举报
回复
{拉2个控件下来IdSMTP1(在Indy Clients页面), IdMessage1(在Indy Misc页面)
实现从XXOO@163.com邮箱发送带附件的邮件到10086@qq.com邮箱}

procedure TForm1.SendMail;
begin
with IdSMTP1 do
begin
Host:='smtp.163.com';
Port:=25;
Username:='XXOO';
Password:='13800138000';
AuthenticationType:=atLogin;
end;

with IdMessage1 do
begin
MessageParts.Clear;
Recipients.EMailAddresses:='10086@qq.com';
From.address:='XXOO@163.com';
Subject:='Hello';
Body.Add('Hello World');
end;

TIdAttachment.Create(IdMessage1.MessageParts,'D:\1.xls');

try
IdSMTP1.Connect;
except on E: Exception do
begin
showmessage('连接服务嚣失败:'+E.Message);
exit;
end;
end;

try
if IdSMTP1.Authenticate then
begin
try
IdSMTP1.Send(IdMessage1);
except on E: Exception do
begin
showmessage('在发送过程中发生错误:'+E.Message);
exit;
end;
end;

showmessage('发送成功!');
end;
finally
IdSMTP1.Disconnect;
end;
end;

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧