标签: mimekit

反序列化mimekit.MimeMessage对象

我有一些问题反序列化mimeKit.mimeMessage,我将其序列化为JSON字符串并存储在redis键值缓存中.

我能够使用json.NET或Jil成功地序列化和存储mimeMessage,但是当我去反序列化时,会抛出以下错误.

由json.NET抛出

无法找到用于MimeKit.Header类型的构造函数.一个类应该有一个默认的构造函数,一个带参数的构造函数或一个用JsonConstructor属性标记的构造函数.路径'标题[0].偏移',第1行,第22位.

我使用StackExchange.Redis方法stringGet获取序列化对象,然后将RedisValue传递给Json.Net; 下面的代码片段:

RedisValue result = db.StringGet(key);

MimeMessage message = new MimeMessage();

message = JsonConvert.DeserializeObject<MimeMessage>(result);
Run Code Online (Sandbox Code Playgroud)

我的理解是总是创建一个默认构造函数,这使得我很难理解,默认构造函数是否已被指定为私有,如果是这样,为什么?

我还检查了返回的JSON字符串的格式,它是正确的.

谢谢你的帮助.

c# json json.net mimekit

2
推荐指数
1
解决办法
1215
查看次数

使用MailKit从电子邮件导出EML

我需要使用Mailkit从IMAP导出EML文件,但是没有方法可以导出电子邮件.

我在MimeKit - Mailkit文档中找不到任何文档.
是否可以使用Mailkit导出EML文件?

c# imap asp.net-web-api mailkit mimekit

2
推荐指数
1
解决办法
2125
查看次数

Mailkit IMAP gmail - 如何发送?在线 Doumentation 没有显示如何发送示例

您如何使用 Imapclient() 发送和发送电子邮件?

使用此页面上的示例: Mimekit 文档

登录 IMAP 并创建消息后,我似乎无法找到用于发送和发送电子邮件的方法。通过 Nuget 安装并安装了最新版本已将此添加到我的代码中:

using MimeKit;
using MailKit;
using MailKit.Search;
using MailKit.Security;
using MailKit.Net.Imap;
Run Code Online (Sandbox Code Playgroud)

以及对 Mailkit 和 Mimekit dll 的引用。我错过了什么吗?

mailkit mimekit

2
推荐指数
1
解决办法
1251
查看次数

MailKit:如何从MimeMessage本地下载所有附件

我在网上查看了其他示例,但我无法弄清楚如何从MimeMessage对象下载和存储所有附件.我确实调查了WriteTo(),但我无法让它工作.还想知道附件是否会根据原始文件名保存,并在电子邮件中输入.这是我到目前为止:

using (var client = new ImapClient())
{
    client.Connect(Constant.GoogleImapHost, Constant.ImapPort, SecureSocketOptions.SslOnConnect);
    client.AuthenticationMechanisms.Remove(Constant.GoogleOAuth);
    client.Authenticate(Constant.GoogleUserName, Constant.GenericPassword);

    if (client.IsConnected == true)
    {
        FolderAccess inboxAccess = client.Inbox.Open(FolderAccess.ReadWrite);
        IMailFolder inboxFolder = client.GetFolder(Constant.InboxFolder);
        IList<UniqueId> uids = client.Inbox.Search(SearchQuery.All);

        if (inboxFolder != null & inboxFolder.Unread > 0)
        {
            foreach (UniqueId msgId in uids)
            {
                MimeMessage message = inboxFolder.GetMessage(msgId);

                foreach (MimeEntity attachment in message.Attachments)
                {
                    //need to save all the attachments locally
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# imap mailkit mimekit

2
推荐指数
1
解决办法
4599
查看次数

MAILKIT 如何将邮件移动到文件夹并获取新的 UniqueID

MailKit.Net.Imap 有 MoveTo(...)。但是,如果我们移动消息,消息将获得新的 UniqueID(因为它在文件夹中是唯一的)。如何获取消息的新 UniqueID?

c# mailkit mimekit

2
推荐指数
1
解决办法
2108
查看次数

使用mimekit / mailkit库获取电子邮件的传递状态

我正在使用@jstedfast Mimekit / Mailkit库,用于从我的应用程序发送大量电子邮件。我想知道如何获取每封电子邮件的传递状态。这是我的第一次尝试,在经过一定的RnD之后,我必须在某些地方设置或传递report-type = delivery-status,但我不知道在哪里阅读该文件,该怎么做。 。我也尝试通过覆盖DeliveryStatusNotification,但一无所获。可能是我走错了方向以获取通知/状态。

 protected override DeliveryStatusNotification? GetDeliveryStatusNotifications(MimeMessage message, MailboxAddress mailbox)
    {}
Run Code Online (Sandbox Code Playgroud)

我知道@jstedfast在这里活跃。为此,我需要您的帮助。我没有任何指示来执行此操作。提前致谢。

c# asp.net-mvc gmail-api mailkit mimekit

1
推荐指数
1
解决办法
1407
查看次数

删除附加到已发送电子邮件的文件时出现异常

成功发送带有附件的电子邮件后,我必须删除作为附件发送的文件。文件正在使用中,所以我有一个例外。

我已经使用了文档的代码。我正在使用一种方法来创建和发送电子邮件,因此所有内容都会在调用后自动处理。

MimeMessage eMail = new MimeMessage();
eMail.From.Add (new MailboxAddress(fromDescription, fromAddress));
foreach (string to in toAddress)
    eMail.To.Add(new MailboxAddress(to));
if (ccAddress != null)
    foreach (string cc in ccAddress)
        eMail.Cc.Add(new MailboxAddress(cc));
if (ccnAddress != null)
    foreach (string ccn in ccnAddress)
        eMail.Bcc.Add(new MailboxAddress(ccn));
eMail.Subject = subject;
var Body = new TextPart("plain")
{
    Text = body
};

// now create the multipart/mixed container to hold the message text and the attachment
var multipart = new Multipart("mixed");
multipart.Add(Body);

if (attachments != null)
{
    foreach (string …
Run Code Online (Sandbox Code Playgroud)

c# mimekit

1
推荐指数
1
解决办法
531
查看次数

MailKit-MimeKit - 如何复制到“已发送”文件夹

我能够使用 MailKit 和 MimeKit 发送 SMTP 电子邮件,而 Outlook 是接收这些邮件的客户端工具。下面的代码已被使用,我的收件箱已收到电子邮件。

var email = new MimeMessage
{
    Sender = MailboxAddress.Parse("<<from>>")
};
email.To.Add(MailboxAddress.Parse("<<to>>"));

email.Subject = "Test mail from Jaish";
var builder = new BodyBuilder();
builder.TextBody = "This is a test mail from Jaish Mathews";
email.Body = builder.ToMessageBody();

using var smtp = new SmtpClient();
smtp.LocalDomain = "<<domain>>";
smtp.Timeout = 10000;

smtp.Connect("<<host>>", 25, SecureSocketOptions.None);
var mailboxes = email.To.Mailboxes;
//Sending email
await smtp.SendAsync(email);
//Disconnecting from smtp
smtp.Disconnect(true);
Run Code Online (Sandbox Code Playgroud)

问题是我的“已发送”文件夹没有记录这些已发送的电子邮件。如何手动复制到我的“已发送”文件夹”

c# mailkit .net-core mimekit .net-5

1
推荐指数
1
解决办法
2410
查看次数