我有一个 COM 库,正在通过 Delphi 7 应用程序使用它来发送电子邮件。
当从 Visual Studio 控制台应用程序使用 COM 对象时,它可以工作。
但是,当使用 Delphi 7 应用程序调用它时,我收到错误
发送邮件失败
无法连接到远程服务器
请帮忙,花了我一天的大部分时间。
C 升值代码
public string SendEmail(string MySubject, string MyRecepient, string MyMessage, string CC = "", string AttachFile = "")
{
using (var db = new HRContext())
{
CSSetup MySetup = db.CSSetup.FirstOrDefault();
CSSecurity SecurityManager = new CSSecurity();
ServicePointManager.SecurityProtocol = (SecurityProtocolType)(0xc00 | 0X3000);
var MyResult = "";
SmtpClient client = new SmtpClient();
client.Port = MySetup.PortNo;
client.Host = MySetup.EmailHost;
client.EnableSsl = CSCommon.CSSetBoolean(MySetup.UseSSL);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Timeout = 45000;
client.UseDefaultCredentials = true;
client.Credentials = new NetworkCredential(MySetup.EmailUser, SecurityManager.Decrypt(MySetup.EmailPass));
MailMessage MyEmail = new MailMessage();
MyEmail.From = new MailAddress(MySetup.EmailUser);
MyEmail.To.Add(new MailAddress(MyRecepient));
MyEmail.Subject = MySubject;
MyEmail.Body = "<div style='font-family: tahoma; font-size: 10pt; display: block'>" + MyMessage + "</div>";
MyEmail.BodyEncoding = UTF8Encoding.UTF8;
MyEmail.IsBodyHtml = true;
//Copy To - Optional
if (CC != "" && MySetup.SendCC == 1)
{
MyEmail.To.Add(CC);
}
//Attachment - Optional
if (AttachFile != "")
{
MyEmail.Attachments.Add(new Attachment(AttachFile));
}
try
{
client.Send(MyEmail);
}
catch (Exception ex)
{
MyResult = ex.Message;
if (ex.InnerException != null)
{
MyResult = MyResult + "\n" + ex.InnerException.Message;
MyResult = MyResult + "\n" + "Host: " + client.Host.ToUpper();
MyResult = MyResult + "\n" + "Port: " + client.Port.ToString();
}
}
return MyResult;
}
}
Delphi调用代码
//--- Send Email
SampleData := EmailManager.SendEmail(ESubject, EAddress, EMessage, TempSetup.EmailUser, FPDF.FileName);
ShowMessage(SampleData);
我已经求助于创建一个控制台应用程序,该应用程序使用 ShellExecute 从 Delphi 7 调用,并传递上面显示的 SendEmail 方法所需的参数。