大家好,我目前使用idsmtp與idmessage發送不了郵件
QQ也開通了POP3/SMTP服務
目前QQ的密碼框要求輸入“授權碼”進行驗證
核心代碼如下,請高手幫我找找原因,或給我一些能夠連接QQ郵箱使用的核心代碼,謝謝。
//Host1 SMTP服務器/Port1埠號/ssl1 SSL/username1郵箱帳號/Password1郵箱密碼
function email_connect(Host1:string;Port1:integer;ssl1:string;username1:string;Password1:string):Boolean;
//發送郵件 from_adrss發出郵箱帳號/to_adrss收郵件帳號/file_name附件路徑/msgMemo郵件內容/str_zt郵件主題
function SendEMail(from_adrss:string;to_adrss:string;file_name:string;msgMemo:Tmemo;str_zt:string):Boolean;
procedure email_disconnect;
implementation
var
idsmtp1:TIdSMTP;
IdAntiFreeze1:TIdAntiFreeze;
idmessage1:TIdMessage;
IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
//Host1 SMTP服務器/Port1埠號/ssl1 SSL/username1郵箱帳號/Password1郵箱密碼
function email_connect(Host1:string;Port1:integer;ssl1:string;username1:string;Password1:string):Boolean;
begin
try
IdAntiFreeze1:=TIdAntiFreeze.Create(nil);
idsmtp1:=TidSMTP.Create(nil);
idmessage1:=TIdMessage.Create(nil);
IdSSLIOHandlerSocketOpenSSL1:=TIdSSLIOHandlerSocketOpenSSL.Create(nil);
idsmtp1.Host:=Host1;
idsmtp1.Port:=Port1;
idsmtp1.username:=username1;
idsmtp1.Password:=Password1;
if ssl1='Y' then
begin
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:=sslvSSLv3;
IdSMTP1.IOHandler:= IdSSLIOHandlerSocketOpenSSL1;
end;
idsmtp1.Connect;
Result:=True;
except
Result:=False;
end;
end;
procedure email_disconnect;
begin
try
idsmtp1.Disconnect;
IdAntiFreeze1.Free;
idsmtp1.Free;
idmessage1.Free;
IdSSLIOHandlerSocketOpenSSL1.Free;
except
end;
end;
//發送郵件 from_adrss發出郵箱帳號/to_adrss收郵件帳號/file_name附件路徑/msgMemo郵件內容/str_zt郵件主題
function SendEMail(from_adrss:string;to_adrss:string;file_name:string;msgMemo:Tmemo;str_zt:string):Boolean;
begin
try
//清空附件
idmessage1.MessageParts.Clear;
//添加附件
TIdAttachmentFile.Create(idmessage1.MessageParts,file_name);
idmessage1.body.Clear;
idmessage1.Subject:=str_zt;
idmessage1.CharSet:='gb2312';
idmessage1.Body.Assign(msgMemo.lines);
idmessage1.From.address:=from_adrss;
idmessage1.Recipients.EMailAddresses:=to_adrss;
idsmtp1.Authenticate;
idsmtp1.Send(idmessage1);
Result:=True;
except
Result:=False;
end;
end;
執行代碼如下:
try
if not sp_mail.email_connect('smtp.qq.com',465,'Y','[email protected]','nhcnuddxofibbjjb') then
begin
ShowMessage('郵箱服務器連接失敗!');
exit;
end;
if not SendEMail('[email protected]','[email protected]','d:\c.sql',memo1,'主題') then
begin
ShowMessage('發送失敗!');
exit;
end;
ShowMessage('發送成功!');
finally
sp_mail.email_disconnect;
end;
uj5u.com熱心網友回復:
頂 頂一下你啊uj5u.com熱心網友回復:
function email_connect(……)……
if not sp_mail.email_connect(……)
前后不對
uj5u.com熱心網友回復:
if ssl1='Y' then//不要IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:=sslvSSLv1;//不是sslvSSLv3
idsmtp1.UseTLS := utUseImplicitTLS;//要設定
idmessage1.CharSet:='gb2312';// 這句不能解決亂碼的問題
我的制作成功了。環境delphi 2010+win 7
有需要的朋友請聯系QQ:443404123
uj5u.com熱心網友回復:
忘記了說明需要使用2個配套的dll檔案:libeay32.dll、ssleay32.dll轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/59145.html
標籤:網絡通信/分布式開發
