System.Net.Mail を使用しています。この分野に関するトピックがいくつかありますが、それらは ASP.NET であり、多くの場合 VB 関連です。私はコードをデスクトップ スケルトン コードに分離しています。私は .NET 3.5 と C# を使用しています。したがって、Send は、私が試したすべてのシナリオ ( EnableSsl
false/true、UseDefaultCredentials
false/true) で機能します。ただし、 true に設定されていないSendAsync
場合にのみ機能UseDefaultCredentials
します (明示的に false に設定しても問題になることがわかります。デフォルトでEnableSsl
は false です)、true (サーバー設定でもかまいません) であり、資格情報をハードコーディングします。 . SendAsync
使えるようになりたいですUseDefaultCredentials
。コード:
void sendmail() {
MailMessage email = new MailMessage();
email.From = new MailAddress("tcs@software.com");
email.To.Add("tcs@software.com");
email.Subject = "Simple test email subject";
email.Body = "Simple test email body";
string mHost = "mail.software.com";
string mUsername = @"DOMAIN\tcs";
string mPassword = "myfreakinpassword?Really???";
SmtpClient smtpCli = new SmtpClient(mHost);
//smtpCli.UseDefaultCredentials = true;
smtpCli.Credentials = new NetworkCredential(mUsername, mPassword);
smtpCli.EnableSsl = true;
smtpCli.SendCompleted += smtpCli_SendCompleted;
try {
//smtpCli.Send(email);
smtpCli.SendAsync(email, null); // This mofo only works in this combination
}
catch (Exception ex) {
Console.WriteLine(ex);
}
}
void smtpCli_SendCompleted(object sender, AsyncCompletedEventArgs e) {
if (e.Error != null)
Console.WriteLine(e.Error);
}