在Delphi中使用indy SMTP发送gmail邮件
在Delphi中发送email很简单,发送ssl方式的gmail邮件也很简单,只要在使用的idSMTP上附加一个TIdSSLIOHandlerSocket 就可以了。
使用控件
-
procedure sendMail(sToMail, sSubject, sContent: String);
-
var
-
SMTP: TIdSMTP;
-
MailMessage: TIdMessage;
-
SSLSocket: TIdSSLIOHandlerSocket;
-
begin
-
SMTP := TIdSMTP.Create(nil);
-
SSLSocket := TIdSSLIOHandlerSocket.Create(nil);
-
MailMessage:= TIdMessage.Create(nil);
-
-
SMTP.IOHandler := SSLSocket;
-
SMTP.Port := 465;
-
SMTP.Host := 'smtp.gmail.com';
-
SMTP.AuthenticationType := atLogin;
-
-
smtp.UserName := 'SunnyYu2000';
-
smtp.Password := 'xxxxxx';
-
-
// 设置邮件的信息
-
MailMessage.From.Address := 'SunnyYu2000@gmail.com';
-
MailMessage.Recipients.EMailAddresses := sToMail;
-
MailMessage.Subject := sSubject;
-
MailMessage.Body.Text := sContent;
-
-
//发送邮件
-
try
-
try
-
SMTP.Connect(1000);
-
SMTP.Send(MailMessage);
-
ShowMessage('发送成功');
-
except on E:Exception do
-
ShowMessage('发送失败: ' + E.Message);
-
end;
-
finally
-
if SMTP.Connected then
-
SMTP.Disconnect;
-
end;
-
-
MailMessage.Free;
-
SSLSocket.Free;
-
SMTP.Free;
-
end;
编译后需要SSL动态库支持,支持库可以到Indy网站上下载到。
如果需要发送附件,可以再发送前添加如下类似代码
-
// 添加邮件的附件
-
TIdAttachment.Create(MailMessage.MessageParts, sAttachmentFileName);
————–
Indy需要的SSL支持dll下载地址 http://www.indyproject.org/Sockets/SSL.EN.aspx
Popularity: 7% [?]
Related
Comments
6 Responses to “在Delphi中使用indy SMTP发送gmail邮件”
你好 想请教你关于gmail发信的问题 – - 用了上面的代码不行 两个dll都有了 总是刚发访问包就卡死了 我QQ973506 能加一下么
[Reply]
编译通过,
下载的dll无效,
我拷贝了foxmail的两个dll到当前exe文件目录中,但连接不上.
易邮件群发的2010年的DLL也不行!
请联系我: luyulouis@21cn.com
[Reply]
编译通过,
下载的dll无效,
我拷贝了foxmail的两个dll到当前exe文件目录中,但连接不上.
易邮件群发的2010年的DLL也不行.
提示–发送失败: connect time out.
请联系我: luyulouis@21cn.com
[Reply]
你好 想请教你关于gmail发信的问题:
上面的代码 编译通过,
但下载的DLL无效.
我拷贝了 foxmail的 或 易邮件群发的 两个DLL到当前EXE文件目录中,出错提示–
发送失败:Connect timed out.
发送失败:Error connecting with SSL.
请联系我: luyulouis@21cn.com
[Reply]
在这句话之前 SMTP.IOHandler := SSLSocket;
需要一句:SSLSocket.SSLOptions.Method:=sslvSSLv3;
[Reply]
sunny Reply:
November 6th, 2012 at 11:07 am
感谢指出,早先gmail的服务器使用默认值也可以发送的,现在不行了。
还有 Gmail有两个端口,采用的不同协议,一个是 SSL 协议, 还有一个是 TLS 协议
[Reply]