我的 sendmail 脚本有点问题。我的邮件无法发送到我的内部分发列表之一。我收到了返回的消息
RESOLVER.RST.AuthRequired; Authentication required
我的 C# 代码如下所示:
public void SendMail(int supplierValue, List<Location> locationList, string meldingsNr, string date, string fromT, string tillT)
{
var mailFrom = "mail@mail.com";
SmtpClient client = new SmtpClient("server ip",25);
client.UseDefaultCredentials = false;
NetworkCredential basicAuthInfo = new NetworkCredential("username", "password");
client.Credentials = basicAuthInfo;
client.EnableSsl = false;
// Create some empty vars
var toList = "";
var ccList = "";
var mailSubject = "";
var mailBody = "";
List<string> locationListString = new List<string>();
List<string> locationListString2 = new List<string>();
// Populate toList with var llString
** code removed **
// switch on supplier Value to fill toList, ccList and mailSubject
** code removed **
// Create mail message
MailMessage message = new MailMessage();
MailAddress mailAddress = new MailAddress(mailFrom);
message.To.Add(toList);
message.From = mailAddress;
message.CC.Add(ccList);
// set subject and encoding
message.Subject = mailSubject;
message.SubjectEncoding = Encoding.UTF8;
// set body and encoding
message.Body = mailBody;
message.BodyEncoding = Encoding.UTF8;
message.IsBodyHtml = true;
try
{
// Send mail
client.SendCompleted += (s, e) =>
{
client.Dispose();
message.Dispose();
};
client.SendAsync(message, null);
} catch (SmtpException ex)
{
MessageBox.Show(ex.InnerException.Message);
} catch (System.Exception ex)
{
MessageBox.Show(ex.InnerException.Message);
}
}
我采纳了这个建议: How can I make SMTP authenticated in C#
确保在调用 SmtpClient.UseDefaultCredentials = false 后设置 SmtpClient.Credentials。该顺序很重要,因为设置 SmtpClient.UseDefaultCredentials = false 会将 SmtpClient.Credentials 重置为 null。
但这没有用。我的代码还有什么问题吗?
最佳答案
您可以将其用作您的电子邮件发送应用程序的更好替代方案:
Let us suppose you are using OutLook to send the emails:
SmtpClient smtpClient = new SmtpClient("smtp-mail.outlook.com", 587); // 587 is
the port number for outlook
smtpClient.Credentials = new
System.Net.NetworkCredential("yourActualEmailIDhere", "yourActualPassword");
smtpClient.UseDefaultCredentials = true;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.EnableSsl = true;
MailMessage mail = new MailMessage();
//Setting From , To and CC
mail.From = new MailAddress("yourActualEmailIDhere");
mail.To.Add(new MailAddress("destinationEmailAddress")); // for 'To' you
don't need any password credentials. So relax.
smtpClient.Send(mail); // finally send the email
希望这对您有所帮助。
关于C#通过smtp发送经过身份验证的邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43674534/