标签: mailkit

C# MailKit HTML 电子邮件以纯文本形式接收

我有一个复杂的电子邮件模板,其中包含许多div,section和其他 HTML 元素。HTML模板引用了CSS(上传到服务器)。我使用下面的代码通过 MailKit 发送 HTML 电子邮件:

var message = new MimeMessage();
var bodyBuilder = new BodyBuilder();
bodyBuilder.HtmlBody = File.ReadAllText(pathToHtmlFIle);
message.Body = bodyBuilder.ToMessageBody();

client.Send(message);
Run Code Online (Sandbox Code Playgroud)

但客户端仅收到纯文本形式的所有内容,没有颜色,没有格式。这是预期的结果吗?

html c# email mailkit mimekit

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

使用 mailkit 发送文件夹为空

我试图显示已发送的文件夹,但它显示该文件夹中没有子文件夹。除收件箱外,所有文件夹都是空的。我正在使用以下代码。

using (var client = new ImapClient())
{
   client.Connect(credentials.incoming_host, (int)credentials.incoming_port, credentials.incoming_ssl); //for SSL
   client.Authenticate(credentials.email, credentials.password);
   client.Inbox.Open(FolderAccess.ReadOnly);

   var sentFolder= client.GetFolder(MailKit.SpecialFolder.Sent);
   var Folders = client.GetFolders(client.PersonalNamespaces[0]);

   client.Disconnect(true);
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用同一文件夹发送电子邮件,然后将其附加如下:

var sentFolder = imapclient.GetFolder(SpecialFolder.Sent);
sentFolder.Append(message);
Run Code Online (Sandbox Code Playgroud)

我的 Outlook 确实检测到它并添加到已发送文件夹中。

c# email mailkit

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

使用 MailboxAddress(String) 构造函数发送带有 mailKit 过时警告的电子邮件

我有以下代码,可以很好地发送电子邮件,但我收到这些警告,表明我应该将某些方法标记为“已过时”。我查看了mailKit网站上的文档,它说我应该使用与MailboxAddress(String). 我明白了,但在如何实现他们要求的方式方面遇到了麻烦,这看起来很简单,但我认为我错过了一步。MailboxAddress(String, String) 这是推荐的新方法之一。

代码如下:

控制器

    public IActionResult RequestPassword()
    {
        var message = new Message(new string[]
        {
           "email@gmail.com"
           
        },
            "Test Email",
            "This is the content from out email."
        );

        _emailSender.SendEmail(message);

        return View();
    }
Run Code Online (Sandbox Code Playgroud)

消息.cs

对于此类,警告会在线弹出To.AddRange(to.Select(x => new MailboxAddress(x)));

public class Message
{
    public List<MailboxAddress> To { get; set; }
    public string Subject { get; set; }
    public string Content { get; set; }

    public Message(IEnumerable<string> to, string subject, string content)
    {
        To = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc mailkit asp.net-core

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

添加Imap文件夹Mailkit

我试图使用Mailkit添加顶级文件夹,所以当我添加以下标签时,我可以将它们分组到此文件夹下.

标签是:

  • mailkit /存档
  • mailkit /标记

我想创建一个名为mailkit的文件夹,以便gmail对它们进行分组,但我现在似乎无法找到一种方法.这有可能吗,有没有人有例子?

c# mailkit

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

使用Mailkit使用IMAP保存附件

我需要在Google IMAP服务器上找到特定的电子邮件,然后保存电子邮件中的附件.我想我已经弄明白了,除了确定附件的文件名是什么的部分.

下面是我的代码到目前为止,我希望有人可以指出我正确的方向来确定文件名.

我用Googled和SO'd但是找不到使用附件方法的东西.

internal class MailKitHelper
{
    private void SaveAttachementsForMessage(string aMessageId)
    {
        ImapClient imapClient = new ImapClient();
        imapClient.Connect("imap.google.com", 993, SecureSocketOptions.Auto);
        imapClient.Authenticate("xxxx", "xxxx");

        HeaderSearchQuery searchCondition = SearchQuery.HeaderContains("Message-Id", aMessageId);
        imapClient.Inbox.Open(FolderAccess.ReadOnly);
        IList<UniqueId> ids = imapClient.Inbox.Search(searchCondition);

        foreach (UniqueId uniqueId in ids)
        {
            MimeMessage message = imapClient.Inbox.GetMessage(uniqueId);

            foreach (MimeEntity attachment in message.Attachments)
            {
                attachment.WriteTo("WhatIsTheFileName"); //How do I determine the file name
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# mailkit

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

使用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 如何发送和检查异步 SMTP

因此,网上有一些很好的示例,说明如何使用 Mailkit 通过 SMTP 发送电子邮件。

通常以:

client.Authenticate(theSMTPUsername,theSMTPPassword);
client.Send(emailMessage);
client.Disconnect(true);
Run Code Online (Sandbox Code Playgroud)

但是,如果需要异步,这不好:

client.Authenticate(theSMTPUsername,theSMTPPassword);
client.SendAsync(emailMessage);
client.Disconnect(true);
Run Code Online (Sandbox Code Playgroud)

但是,我想知道的是异步发送何时完成,或者它是否不成功。在 .Net 本机库下,这是通过回调(事件处理程序)实现的。

是否可以为 MailKit SendAsync 定义一个“已完成”的回调处理程序,如果不是,那么发现它是否成功的最佳实践是什么。

谢谢

email asynchronous smtp mailkit

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

5.7.0用户未使用mailkit和strato服务器在asp.net core1中进行身份验证

在asp.net core 1应用程序中,我正在尝试使用mailkit库(版本1.8.1)向strato服务器发送电子邮件.我的代码:

  var emailMessage = new MimeKit.MimeMessage();
  try
  {
      emailMessage.From.Add(new MimeKit.MailboxAddress("Support", "some@test.com"));
      emailMessage.To.Add(new MimeKit.MailboxAddress("", "test@test.com"));
      emailMessage.Subject = "Subject";
      var bodyBuilder = new MimeKit.BodyBuilder();
      bodyBuilder.HtmlBody = @"<b>Some body</b>";

      emailMessage.Body = bodyBuilder.ToMessageBody(); 

      using (var client = new MailKit.Net.Smtp.SmtpClient())
      {
          client.Timeout = 15000;
          // Accept all SSL certificates (in case the server supports STARTTLS)
          client.ServerCertificateValidationCallback = (s, c, h, e) => true;

          await client.ConnectAsync("smtp.strato.de", 587, MailKit.Security.SecureSocketOptions.Auto);
          // Note: since we don't have an OAuth2 token, disable
          // the XOAUTH2 authentication mechanism.
          client.AuthenticationMechanisms.Remove("XOAUTH2"); …
Run Code Online (Sandbox Code Playgroud)

c# email mailkit asp.net-core

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

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
查看次数