我想从Windows服务应用程序使用SftpClient发送电子邮件。
我正在使用 .NET framework 3.5
我写了下面的代码:
public void SendEmail(string sender, string host, string password, string port,
string body, string subject, string[] receivers, List<Attachment> attachments)
{
SmtpClient client = new SmtpClient()
{
Host = host,
Port = Convert.ToInt32(port),
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new System.Net.NetworkCredential(sender, password)
};
MailMessage message = new MailMessage();
// sender
MailAddress from = new MailAddress(sender);
message.From = from;
// receivers
foreach (string receiver in receivers) {
message.To.Add(receiver);
}
// attachments
foreach (Attachment att in attachments)
{
message.Attachments.Add(att);
}
message.Body = body;
message.Subject = subject;
client.Send(message);
}
我放的凭据是正确的,但如果我使用端口587我得到了:
“试图以其访问权限禁止的方式访问套接字an_ip_address:587”
如果我使用端口465(应该弃用),我得到了:
“System.Net.Mail.SmtpException:发送邮件失败.---&gt; System.IO.IOException:无法从传输连接中读取数据:net_io_connectionclosed。”
关闭Windows防火墙也会发生这种情况。
发送电子邮件的所有参数(密码,主机,端口......)均可由此Windows服务的最终用户配置。