Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中显示来自内联异步事件处理程序的MailKit响应#_C#_Email_Async Await_Mailkit - Fatal编程技术网

C# 如何在C中显示来自内联异步事件处理程序的MailKit响应#

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

我正在用C#实现MailKit以发送电子邮件

我需要能够看到来自服务器的响应

MessageSent事件处理程序作为内联异步方法连接

我确信这就是为什么来自SmtpClient的响应总是空的。但是,我不明白如何正确提取响应消息

           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);

问题是,您的连接/身份验证/发送逻辑都在事件回调内部,因此没有留下任何东西导致事件发出。

消息是否已发送?否,我没有收到电子邮件。该代码的哪一部分负责发送邮件?