如何将Mailkit发送的邮件保存在服务器上?

问题描述 投票:0回答:1

我正在使用 MailKit 库制作一个简单的 WPF 应用程序来发送自动电子邮件。 我雇用了使用 Cpanel 的托管服务来通过 Roundcube 创建电子邮件,我在其中使用信息进行连接、登录等。 当我手动登录 Roundcube 时,我注意到我发送的测试电子邮件不在已发送文件夹中。 我可以使用以下代码完美发送电子邮件:

public static async Task SendMail(BilletInfo info, string m)
{
    try
    {
        var message = new MimeMessage();
        message.From.Add(new MailboxAddress(Server.Name, Server.Login));
        message.To.Add(new MailboxAddress(info.ClientName, info.Mail));
        message.Subject = MessageController.GetChargeTitle(info);

        var bodyBuilder = new BodyBuilder();
        bodyBuilder.TextBody = m;
        bodyBuilder.Attachments.Add(info.AttachmentPath);

        message.Body = bodyBuilder.ToMessageBody();

        using(var client = new MailKit.Net.Smtp.SmtpClient())
        {
            client.Connect(Server.ServerName, Server.SMTPPort, SecureSocketOptions.Auto);
            client.Authenticate(Server.Login, Server.Password);

            await client.SendAsync(message);
            client.Disconnect(true);
        }

    }
    catch (Exception ex)
    {
        MessageBoxController.ShowError($ "{ex.Message}");
    }
}

但是,它不会出现在Roundcube客户端中。 有没有什么方法可以将MailKit发送的消息以Roundcube客户端中出现的方式保存在服务器上?

c# wpf cpanel mailkit roundcube
1个回答
0
投票

您需要使用 ImapClient 将邮件保存到 IMAP“已发送”文件夹。

using (var client = new ImapClient()) {
    client.Connect(host, port, SecureSocketOptions.Auto);
    client.Authenticate(username, password);

    // Hopefully your server supports the SPECIAL-USE or XLIST extensions
    // to make getting the Sent folder easy.
    IMailFolder sent = null;

    if (client.Capabilities.HasFlag(ImapCapabilities.SpecialUse) ||
        client.Capabilities.HasFlag(ImapCapabilities.XList)) {
        sent = client.GetFolder(SpecialFolder.Sent);
    }

    if (sent == null) {
        var personal = client.GetFolder(client.PersonalNamespaces[0]);
        sent = personal.GetSubfolders().FirstOrDefault(subfolder => subfolder.Name.StartsWith("Sent"));
    }

    sent?.Append(message);

    client.Disconnect(true);
}
© www.soinside.com 2019 - 2024. All rights reserved.