gpt4 book ai didi

C#通过smtp发送经过身份验证的邮件

转载 作者:太空宇宙 更新时间:2023-11-03 15:05:45 24 4
gpt4 key购买 nike

我的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com