C# 如何在C中显示来自内联异步事件处理程序的MailKit响应#
我正在用C#实现MailKit以发送电子邮件 我需要能够看到来自服务器的响应 MessageSent事件处理程序作为内联异步方法连接 我确信这就是为什么来自SmtpClient的响应总是空的。但是,我不明白如何正确提取响应消息C# 如何在C中显示来自内联异步事件处理程序的MailKit响应#,c#,email,async-await,mailkit,C#,Email,Async Await,Mailkit,我正在用C#实现MailKit以发送电子邮件 我需要能够看到来自服务器的响应 MessageSent事件处理程序作为内联异步方法连接 我确信这就是为什么来自SmtpClient的响应总是空的。但是,我不明白如何正确提取响应消息 var messageToSend = new MimeMessage { Subject = subject, Body = new TextPart(Mime
var messageToSend = new MimeMessage
{
Subject = subject,
Body = new TextPart(MimeKit.Text.TextFormat.Text) {Text = message_body }
};
foreach (var recipient in recipients)
messageToSend.To.Add(new MailboxAddress(recipient.Name, recipient.Address));
var message = "";
using (var smtp = new MailKit.Net.Smtp.SmtpClient())
{
smtp.MessageSent += async (sender, args) =>
{ // args.Response };
smtp.ServerCertificateValidationCallback = (s, c, h, e) => true;
await smtp.ConnectAsync(Properties.Settings.Default.Email_Host, 587, SecureSocketOptions.StartTls);
await smtp.AuthenticateAsync(Properties.Settings.Default.Test_Email_UserName,
Properties.Settings.Default.Test_Email_Password);
await smtp.SendAsync(messageToSend);
await smtp.DisconnectAsync(true);
MessageBox.Show(args.Response);// <== doesn't display
message =args.Response;// <== this is my second attempt at getting at the response
};
}
MessageBox.Show(message);// <== always display empty string
var messageToSend=new mimessage
{
主语,
Body=newtextpart(MimeKit.Text.TextFormat.Text){Text=message\u Body}
};
foreach(收件人中的var收件人)
messageToSend.To.Add(新邮箱地址(recipient.Name,recipient.Address));
var message=“”;
使用(var smtp=new MailKit.Net.smtp.SmtpClient())
{
smtp.MessageSent+=异步(发件人,参数)=>
{//args.Response};
smtp.ServerCertificateValidationCallback=(s,c,h,e)=>true;
等待smtp.ConnectAsync(Properties.Settings.Default.Email_Host,587,SecureSocketOptions.StartTls);
等待smtp.AuthenticateTasync(Properties.Settings.Default.Test\u Email\u用户名,
属性。设置。默认值。测试(电子邮件和密码);
等待smtp.SendAsync(messageToSend);
等待smtp.DisconnectAsync(true);
MessageBox.Show(args.Response);//您需要做的是:
var message = "";
using (var smtp = new MailKit.Net.Smtp.SmtpClient())
{
smtp.MessageSent += async (sender, args) =>
{
message = args.Response
};
smtp.ServerCertificateValidationCallback = (s, c, h, e) => true;
await smtp.ConnectAsync(Properties.Settings.Default.Email_Host, 587, SecureSocketOptions.StartTls);
await smtp.AuthenticateAsync(Properties.Settings.Default.Test_Email_UserName,
Properties.Settings.Default.Test_Email_Password);
await smtp.SendAsync(messageToSend);
await smtp.DisconnectAsync(true);
}
MessageBox.Show(message);
问题是,您的连接/身份验证/发送逻辑都在事件回调内部,因此没有留下任何东西导致事件发出。消息是否已发送?否,我没有收到电子邮件。该代码的哪一部分负责发送邮件?