我使用INDY发送电子邮件使用端口25上的SMTP客户端没有问题.
@H_502_2@现在我需要使用Gmail帐户发送电子邮件,因此我需要使用TLS.
@H_502_2@任何人都可以提供一个简单的样本,如何做到这一点.
@H_502_2@谢谢
解决方法
此代码适用于GMail:
begin IDSMTP1 := TIDSMTP.Create; IdSSLIOHandlerSocketOpenSSL1 := TIdSSLIOHandlerSocketOpenSSL.Create; try with IDSMTP1 do begin Host := srvr.Host; Port := srvr.Port; if (srvr.needAuthentication = 'Y') then AuthType := satDefault else AuthType := satNone; IOHandler := IdSSLIOHandlerSocketOpenSSL1; if (srvr.secureMode = 'Y') then UseTLS := utUseRequireTLS else UseTLS := utNoTLSSupport; Username := srvr.Username; Password := srvr.Password; end; idMBHTML := TIdMessageBuilderHTML.Create; Idmessage1 := TIDMessage.Create; try with idMBHTML do begin enc := TEncoding.Unicode; HTML.LoadFromStream(FEmlMsg.MsgBody,enc); for c := 0 to FEmlMsg.Attachmnts.Count - 1 do Attachments.Add(FEmlMsg.Attachmnts[c]); FillMessage(IDMessage1); end; with Idmessage1 do begin Subject := FEmlMsg.MsgSubject; From.Address := FEmlMsg.FromAddress; From.Name := FEmlMsg.FromName; Recipients.EMailAddresses := FEmlMsg.RecipientAddress; if FEmlMsg.ReceiptRecipientAddress <> '' then ReceiptRecipient.Address := FEmlMsg.ReceiptRecipientAddress; if FEmlMsg.ReceiptRecipientName <> '' then ReceiptRecipient.Name := FEmlMsg.ReceiptRecipientName; end; with IDSMTP1 do begin if not Connected then Connect; Send(IdMessage1); end; finally Idmessage1.Free; idMBHTML.Free; end; finally IDSMTP1.Free; IdSSLIOHandlerSocketOpenSSL1.Free; end; end;