小编jst*_*ast的帖子

MimeKit:如何嵌入图像?

我正在使用MailKit/MimeKit 1.2.7(最新的NuGet版本).

我尝试通过API文档中的示例("使用BodyBuilder"部分)将图像嵌入到我的电子邮件的HTML正文中.

我当前的代码如下所示:

 var builder = new BodyBuilder();

 builder.HtmlBody = @"<p>Hey!</p><img src=""Image.png"">";

 var pathImage = Path.Combine(Misc.GetPathOfExecutingAssembly(), "Image.png");
 builder.LinkedResources.Add(pathLogoFile);
 message.Body = builder.ToMessageBody();
Run Code Online (Sandbox Code Playgroud)

我可以发送此电子邮件,实际上图像附加到电子邮件中.但它没有嵌入.

我错过了什么吗?或者这是Apple Mail的错(这是我用来接收电子邮件的电子邮件客户端)?

我很感激任何想法(非常感谢Jeffrey Stedfast提供这么棒的工具集!!).

英格玛

c# mimekit

16
推荐指数
2
解决办法
7002
查看次数

ASP 5,MVC 6发送电子邮件

我正在涉足ASP 5/MVC 6组合,我发现我不再知道如何做最简单的事情.例如,您如何发送电子邮件?

在MVC 5世界中,我会做这样的事情:

using (var smtp = new SmtpClient("localhost"))
{
    var mail = new MailMessage
    {
        Subject = subject,
        From = new MailAddress(fromEmail),
        Body = message
    };

    mail.To.Add(toEmail);
    await smtp.SendMailAsync(mail);
}
Run Code Online (Sandbox Code Playgroud)

现在这段代码不再编译,System.Net.Mail似乎不再存在.在互联网上进行一些讨论之后,它似乎不再包含在新的核心(dnxcore50)中.这让我想到了我的问题......

你如何在新世界发送电子邮件?

还有一个更大的问题,你在哪里可以找到核心.Net中不再包含的所有东西的替代品?

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

16
推荐指数
2
解决办法
8636
查看次数

回复Mailkit中的邮件

我正在为我的项目使用Mailkit库(Imap).

我可以通过SmtpClient轻松发送新消息.

目前我正在挖掘如何回复特定邮件.是否可以为该回复邮件添加更多收件人?

@jstedfast感谢精彩的:)

c# mailkit mimekit

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

MailKit从gmail中删除单个邮件

我使用MailKit(https://github.com/jstedfast/MailKit)通过imap连接谷歌应用程序,我怎么能删除一条消息呢?(我可以将它移到垃圾箱,只需将其从收件箱中取出即可.

到目前为止,我已将其连接,下载,解析来自邮件正文的链接.我只需要最后一个动作来获得我需要的东西.

谢谢!

c# gmail

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

MimeKit.MimeMessage到浏览器可渲染的HTML

有没有办法将MimeKit.MimeMessage转换为可以在Web浏览器中呈现的HTML?我不关心邮件附件,但希望能够在浏览器中显示邮件正文,包括嵌入的图像.我是MimeKit的新手,无法在API文档中找到任何内容.任何信息表示赞赏.

编辑:我没有找到与MimeKit本地执行此操作的方法,但我将其与HtmlAgilityPack结合以解析MimeMessage.HtmBody并修复内嵌图像.这似乎有效,除非有人有更好的主意,否则我会继续使用它.供参考,这是代码:

//////////////////////////////////////////////////////////////////////////////////////////
// use MimeKit to parse the message
//////////////////////////////////////////////////////////////////////////////////////////
MimeKit.MimeMessage msg = MimeKit.MimeMessage.Load(stream);

//////////////////////////////////////////////////////////////////////////////////////////
// use HtmlAgilityPack to parse the resulting html in order to fix inline images
//////////////////////////////////////////////////////////////////////////////////////////
HtmlAgilityPack.HtmlDocument hdoc = new HtmlAgilityPack.HtmlDocument();
hdoc.LoadHtml(msg.HtmlBody);
// find all image nodes
var images = hdoc.DocumentNode.Descendants("img");
foreach (var img in images)
{                        
    // check that this is an inline image
    string cid = img.Attributes["src"].Value;
    if (cid.StartsWith("cid:"))
    {
        // remove the cid part of the attribute
        cid = cid.Remove(0, 4);
        // …
Run Code Online (Sandbox Code Playgroud)

c# mimekit

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

SslHandshakeException:尝试建立 SSL 或 TLS 连接时出错

我正在尝试使用 imap 访问 gmail 电子邮件,并且代码在 ssl 握手时失败,但没有显示任何错误。如果有人可以帮忙解决这个问题,真的很感激。我已经使用 xunit,.NET Core 2.1 构建了它。我正在使用 MailKit Nuget

   public GMailHandler(string mailServer, int port, bool ssl, string login, string password)

          //mailServer = imap.gmail.com
          //port = 993
          //ssl = true

          {

                  if (ssl)

                         Client.Connect(mailServer, port);

                  else

                         Client.Connect(mailServer, port);

                  Client.Authenticate(login, password);

                  Client.Inbox.Open(FolderAccess.ReadOnly);

          }
Run Code Online (Sandbox Code Playgroud)

c# ssl imap xunit mailkit

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

MimeKit:如何通过MessageId删除电子邮件?

我正在使用MailKit/MimeKit 1.2.7(最新的NuGet版本).

使用ImapClient删除电子邮件非常简单......

client.Inbox.AddFlags(uniqueId, MessageFlags.Deleted, silent: true);
Run Code Online (Sandbox Code Playgroud)

...如果您知道电子邮件UniqueId或其索引.

就我而言,我不知道其中任何一方.我所拥有的只是消息本身(MimeMessage)和它的MessageId.

我希望MessageId == UniqueId,但显然事实并非如此.

我是否有机会通过拥有相应的MimeMessage/MessageId来删除电子邮件?

c# mimekit

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

.NET 的 IMAP 文件夹路径编码 (IMAP UTF-7)?

IMAP 规范(RFC 2060,5.1.3。邮箱国际命名约定)描述了如何处理文件夹名称中的非 ASCII 字符。它定义了经过修改的UTF-7 编码:

按照惯例,国际邮箱名称使用 [UTF-7] 中描述的 UTF-7 编码的修改版本指定。这些修改的目的是纠正 UTF-7 的以下问题:

  1. UTF-7 使用“+”字符进行移位;这与邮箱名称中常用的“+”冲突,尤其是 USENET 新闻组名称。

  2. UTF-7 的编码是 BASE64,它使用“/”字符;这与使用“/”作为流行的层次结构分隔符相冲突。

  3. UTF-7 禁止“\”的未编码使用;这与使用“\”作为流行的层次结构分隔符相冲突。

  4. UTF-7 禁止“~”的未编码使用;这与在某些服务器中使用“~”作为主目录指示符相冲突。

  5. UTF-7 允许多种替代形式来表示同一个字符串;特别是,可打印的 US-ASCII 字符可以以编码形式表示。

在修改后的 UTF-7 中,除“&”之外的可打印 US-ASCII 字符代表它们自己;也就是说,八位字节值为 0x20-0x25 和 0x27-0x7e 的字符。字符“&”(0x26)由两个八位字节序列“&-”表示。

所有其他字符(八位字节值 0x00-0x1f、0x7f-0xff 和所有 Unicode 16 位八位字节)都以修改后的 BASE64 表示,[UTF-7] 进一步修改为使用“,”而不是“/”。
修改后的 BASE64 不得用于表示任何可以表示其自身的打印 US-ASCII 字符。

"&" 用于转换到修改后的 BASE64 和 "-" 用于转换回 US-ASCII。所有名称都以 US-ASCII 开头,并且必须以 US-ASCII 结尾(即以 Unicode 16 位八位字节结尾的名称必须以“-”结尾)。

在我开始实现它之前,我的问题是:是否有一些.NET 代码/库(甚至在框架中)可以完成这项工作?我找不到 .NET 资源(仅适用于其他语言/框架的实现)。

谢谢!

.net c# encoding imap utf-7

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

如何使用pop3 c#阅读最新的电子邮件

我想从我的Gmail帐户中读取emial.我正在使用"OpenPop.Pop3"来阅读我的Gmail帐户中的电子邮件,我使用下面的代码: -

using OpenPop.Pop3;    
public DataTable ReadEmailsFromId()
        {
            DataTable table = new DataTable();
            try
            {
                using (Pop3Client client = new Pop3Client())
                {
                    int messageCount = client.GetMessageCount();
                    for (int i = messageCount; i > 0; i--)
                    {
                        table.Rows.Add(client.GetMessage(i).Headers.Subject, client.GetMessage(i).Headers.DateSent);
                        string msdId = client.GetMessage(i).Headers.MessageId;
                        OpenPop.Mime.Message msg = client.GetMessage(i);
                        OpenPop.Mime.MessagePart plainTextPart = msg.FindFirstPlainTextVersion();
                        string message = plainTextPart.GetBodyAsText();                           
                    }
                }
            }
        return table;
        }
Run Code Online (Sandbox Code Playgroud)

但它在2016年3月4日之前收到的电子邮件,没有提取新的/最新的电子邮件."OpenPop.Pop3"中有任何限制,还是我遗漏了什么?

c# pop3 email-client openpop

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

使用 MailKit 检查 imap 文件夹是否存在

我正在尝试将邮件移动到另一个文件夹,但我无法找到一种简单的方法来检查目标文件夹是否存在,我假设给定的文件夹路径是根文件夹,我尝试这样做:

\n\n
public void MoveMessages(Config accountInfo, List<int> uids, string \n   sourceFolderName, string targetFolderName)   \n{\n            ValidateAccountInfoConfiguration(accountInfo);\n            using (var client = new ImapClient())\n            {\n                Authenticate(accountInfo, client);\n\n                var sourceFolder = GetSourceFolder(sourceFolderName, client);\n                sourceFolder.Open(FolderAccess.ReadWrite);\n                var topLevelFolder = client.GetFolder(client.PersonalNamespaces[0]);\n                var topFolders = topLevelFolder.GetSubfolders();\n                var targetFolder = topFolders.FirstOrDefault(folder => folder.Name == targetFolderName);\n                if (targetFolder == null)\n                    targetFolder = topLevelFolder.Create(targetFolderName, true);\n                var uidsToMove = GetUniqueIds(sourceFolder, SearchQuery.Seen).Where(uid => uids.Any(uidToMove => uidToMove == uid.Id)).ToList();\n                sourceFolder.MoveTo(uidsToMove, targetFolder);\n                sourceFolder.Expunge(uidsToMove);\n\n            }\n        }\n
Run Code Online (Sandbox Code Playgroud)\n\n

在文档中,IMailFolder 接口包含 Exists 属性,但是当我尝试使用 IMailFolder.GetFolder("pathToFolder") 获取文件夹时,如果该文件夹不存在,则会抛出folderNotFound 异常,因此我无法理解用例存在财产,我错过了什么?或者我当前的实现是实现获取目标文件夹的正确方法?

\n

c# imap mailkit

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