我有一些问题反序列化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字符串的格式,它是正确的.
谢谢你的帮助.
我需要使用Mailkit从IMAP导出EML文件,但是没有方法可以导出电子邮件.
我在MimeKit - Mailkit文档中找不到任何文档.
是否可以使用Mailkit导出EML文件?
您如何使用 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 的引用。我错过了什么吗?
我在网上查看了其他示例,但我无法弄清楚如何从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) MailKit.Net.Imap 有 MoveTo(...)。但是,如果我们移动消息,消息将获得新的 UniqueID(因为它在文件夹中是唯一的)。如何获取消息的新 UniqueID?
我正在使用@jstedfast Mimekit / Mailkit库,用于从我的应用程序发送大量电子邮件。我想知道如何获取每封电子邮件的传递状态。这是我的第一次尝试,在经过一定的RnD之后,我必须在某些地方设置或传递report-type = delivery-status,但我不知道在哪里阅读该文件,该怎么做。 。我也尝试通过覆盖DeliveryStatusNotification,但一无所获。可能是我走错了方向以获取通知/状态。
protected override DeliveryStatusNotification? GetDeliveryStatusNotifications(MimeMessage message, MailboxAddress mailbox)
{}
Run Code Online (Sandbox Code Playgroud)
我知道@jstedfast在这里活跃。为此,我需要您的帮助。我没有任何指示来执行此操作。提前致谢。
成功发送带有附件的电子邮件后,我必须删除作为附件发送的文件。文件正在使用中,所以我有一个例外。
我已经使用了文档的代码。我正在使用一种方法来创建和发送电子邮件,因此所有内容都会在调用后自动处理。
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) 我能够使用 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)
问题是我的“已发送”文件夹没有记录这些已发送的电子邮件。如何手动复制到我的“已发送”文件夹”