标签: mailkit

回复Mailkit中的邮件

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

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

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

@jstedfast感谢精彩的:)

c# mailkit mimekit

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

使用MailKit将电子邮件发送到SpecifiedPickupDirectory

我使用SmtpClient到目前为止使用ASP.NET MVC 5.为了测试本地系统上的电子邮件发送功能,我正在使用 client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;

现在,我想在ASP.NET Core中做同样的事情,直到现在还没有实现SmtpClient类.所有搜索结果都在MailKit结束.我使用了他们的发送邮件代码,它与gmail一起正常工作.

我不想每次都发送测试电子邮件,在我的项目中可能有很多场景我需要发送电子邮件.如何使用MailKit的本地电子邮件发送功能.任何链接或小源代码都会有所帮助.谢谢

c# email smtp mailkit asp.net-core

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

更改电子邮件中自动附加文件的名称

我正在使用 Mailkit 库发送电子邮件。这是这样做的代码:

    public async Task SendAsync(IdentityMessage message)
    {
        if (message == null)
            return;

        LinkedResource inline = new LinkedResource(System.Web.Hosting.HostingEnvironment.MapPath($"~/Images/logo.png"))
        {
            ContentId = Guid.NewGuid().ToString(),
            ContentType = new ContentType("image/png")
            {
                Name = "logo.png"
            }
        };

        var htmlBody = message.Body.Replace("{CID:LOGO}", String.Format("cid:{0}", inline.ContentId));

        AlternateView avHtml = AlternateView.CreateAlternateViewFromString(htmlBody, null, MediaTypeNames.Text.Html);
        avHtml.LinkedResources.Add(inline);

        using (MailMessage objMailMsg = new MailMessage())
        {
            objMailMsg.AlternateViews.Add(avHtml);
            objMailMsg.Body = htmlBody;
            objMailMsg.Subject = message.Subject;
            objMailMsg.BodyEncoding = Encoding.UTF8;

            Properties.Settings.Default.Reload();

            string fromEmail = Properties.Settings.Default.FromMail;
            string fromName = Properties.Settings.Default.FromName;
            string smtpPassword = Properties.Settings.Default.PwdSmtp;

            objMailMsg.From = new MailAddress(fromEmail, …
Run Code Online (Sandbox Code Playgroud)

c# smtpclient email-attachments mailkit

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

Mailkit SMTP - StartTLS和TLS标志

我想通过SmtpClient连接到iCloud

我使用的设置如下:

服务器名称:smtp.mail.me.com
SSL必需:是
如果在使用SSL时看到错误消息,请尝试使用TLS或STARTTLS.
端口:587需要
SMTP验证:是 - 具有相关的用户名和密码

如果我使用SSL,我会收到"由于意外的数据包格式而导致握手失败"

如果我不使用SSL visual studio调试器挂起连接.

我认为问题是我没有告诉SmtpClient使用tls但是我找不到如何做到这一点的文档.

代码如下:

using (var client = new SmtpClient()) {
    client.Timeout = 1000 * 20;
    //client.Capabilities.
    client.AuthenticationMechanisms.Remove ("XOAUTH2");

    client.Connect("SMTP.mail.me.com", 587, false); //dies here
    //client.Connect(servername, port, useSsl);
    //can I set tls or starttls here??
    client.Authenticate(username, password);
    client.Send(FormatOptions.Default, message);
}
Run Code Online (Sandbox Code Playgroud)

我能够手动设置TLS或StartTLS.我尝试过的一件事是以下但它似乎没有用

client.Connect(new Uri("smtp://" + servername + ":" + port + "/?starttls=true"));
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助.

c# mailkit

9
推荐指数
2
解决办法
9711
查看次数

如何使用 MailKit 中的 OAuth 2.0 连接到 Exchange Online?

我有一个 Web 应用程序,它使用 MailKit 和基本身份验证通过 Exchange Online (Office365) 向用户发送电子邮件。我们公司是 MS 合作伙伴,因此有义务在 2020 年 2 月底之前关闭我们服务的基本身份验证。

因此,我想使用 OAuth 2.0 连接到 Exchange Online,类似于此示例。事实上,根据这个答案可能有一个解决方案,但我找不到任何相关信息。

现在我正在使用 MS Identity Platform v2.0,但我不知道该怎么做。

任何帮助将不胜感激。

更新1

我不想代表登录用户发送邮件,而是有一个 Office365 用户帐户用于向其他人发送邮件(通知等)。

更新2

我设法使用 Microsoft Graph SDK 和Username/Password Provider更接近我想要做的事情。

我们的用户帐户需要多因素身份验证,因此在使用用户密码时出现错误,因为我无法满足第二个因素。当我使用应用程序密码时,由于密码不正确,身份验证失败。

更新3

我现在改用邮件转发。但如果我能找到答案,我会更新这个问题。

oauth-2.0 mailkit microsoft-identity-platform microsoft-graph-api

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

MailKit.Net.Smtp.SmtpClient SMTP服务器不支持身份验证

我想使用 MailKit 通过我们的 Exchange 服务器发送电子邮件,并使用进程的凭据。

使用域/用户名/密码构建 System.Net.Mail.SmtpClient 和 NetworkCredential 可以工作,但在使用 MailKit.Net.Smtp.SmtpClient 和 NetworkCredential 时不起作用。抛出异常就像

异常消息:SMTP 服务器不支持身份验证。跟踪消息:位于 MailKit.Net.Smtp.SmtpClient.d__73.MoveNext() --- 从先前引发异常的位置开始的堆栈跟踪结束 --- 位于系统的 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) .Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)在MailKit.Net.Smtp.SmtpClient.Authenticate(编码编码,ICredentials凭证,CancellationToken取消令牌)在MailKit.MailService.Authenticate(ICredentials凭证,CancellationToken取消令牌)在SMTP_EmailCheck.P​​rogram。 D:\Work\SMTP_EmailCheck\SMTP_EmailCheck\Program.cs 中的 SendMail_MailKit_WithDomain():第 123 行

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            var mailMessage = new MimeMessage();
            mailMessage.From.Add(new MailboxAddress(fromMailAddress));
            mailMessage.To.Add(new MailboxAddress(toMailAddress));
             mailMessage.Subject = "SendMail_MailKit_WithDomain";
            mailMessage.Body = new TextPart(TextFormat.Plain)
            {
                Text = "Hello"
            };

            using (var smtpClient = new MailKit.Net.Smtp.SmtpClient())
            {
                smtpClient.Connect("MailServer", 25, MailKit.Security.SecureSocketOptions.None);                   
                var creds = new NetworkCredential("UserName", "Password", "Domain");
                smtpClient.Authenticate(creds);                    
                smtpClient.Send(mailMessage);
                smtpClient.Disconnect(true);
            }
Run Code Online (Sandbox Code Playgroud)

提前致谢

.net c# smtpclient mime-message mailkit

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

MailKit、Office 365 和 OAUTH2:服务器端应用程序身份验证问题

我必须构建一个在服务器端批量运行的 .Net 控制台应用程序,并使用 Office365 和 MailKit 向收件人发送电子邮件。

我公司最近推出了多重身份验证;我已经重写了一个交互式应用程序,允许用户使用 MailKit 和 MFA 发送电子邮件,但我无法在无人值守的应用程序中实现相同的功能。

我已经在 Microsoft Azure 上注册了该应用程序,创建了客户端密钥并实现了以下类:

    public class Mailer {
    public async static void Send(string subject, string body) {
        string tenantID = "abcdef";
        string clientId = "ghilmn";
        string clientSecret = "opqrst";
        string appName = "MyApp";

        //clientSecret = Uri.EscapeDataString(clientSecret);
        //clientSecret = Uri.EscapeUriString(clientSecret);

        var MyConfidentialClientApplication = ConfidentialClientApplicationBuilder.Create(clientId)
            .WithClientSecret(clientSecret)
            .WithTenantId(tenantID)
            .Build();

        var scopes = new string[] {"https://graph.microsoft.com/.default"};

        try {
            var authToken = await MyConfidentialClientApplication.AcquireTokenForClient(scopes).ExecuteAsync();

            var oauth2 = new SaslMechanismOAuth2(appName, authToken.AccessToken);  //  SaslMechanismOAuth2(appName, authToken.AccessToken); …
Run Code Online (Sandbox Code Playgroud)

c# oauth-2.0 office365 mailkit

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

是否可以使用Mailkit和Exchange的默认网络凭据?

我想使用MailKit通过我们的Exchange服务器发送电子邮件,使用该进程的凭据.

NetworkCredential使用域/用户名/密码建立一个工作:

using (var client = new SmtpClient(ProtocolLogger))
{
    client.Connect(server, port);

    // Works
    var creds = new NetworkCredential(username, password, domain);
    client.Authenticate(creds);

    client.Send(msg);        
}
Run Code Online (Sandbox Code Playgroud)

如果我CredentialCache.DefaultNetworkCredentials在以同一个用户身份运行时使用,则会失败并显示MailKit.Security.AuthenticationException:

using (var client = new SmtpClient(ProtocolLogger))
{
    client.Connect(server, port);

    // Authentication failure
    client.Authenticate(CredentialCache.DefaultNetworkCredentials);

    client.Send(msg);        
}
Run Code Online (Sandbox Code Playgroud)

ProtocolLogger输出以下(含邮件服务器和base64编码字符串改变):

Connected to smtp://mymailserver:25/?starttls=when-available
S: 220 mymailserver Microsoft ESMTP MAIL Service ready at Thu, 30 Jun 2016 12:45:04 +0930
C: EHLO [172.1.1.2]
S: 250-mymailserver Hello [172.1.1.2] …
Run Code Online (Sandbox Code Playgroud)

c# exchange-server mailkit

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

MailKit C#SmtpClient.Connect()到Office 365生成异常:"远程主机强行关闭现有连接"

我在通过Office 365 SMTP和MailKit发送电子邮件时遇到问题.我得到的例外是:

未处理的异常:System.IO.IOException:无法从传输连接读取数据:远程主机强制关闭现有连接.

System.Net.Sockets.SocketException:远程主机强制关闭现有连接

https://github.com/jstedfast/MailKit

码:

var smtpClient = new SmtpClient();

smtpClient.Connect("smtp.office365.com", 587, true);
Run Code Online (Sandbox Code Playgroud)

Microsoft Office 365设置应该是正确的:

https://support.office.com/en-us/article/POP-and-IMAP-settings-for-Outlook-Office-365-for-business-7fc677eb-2491-4cbc-8153-8e7113525f6c

奇怪的是,如果我使用以下所有内容,即使Office 365说SSL是必需的.

smtpClient.Connect("smtp.office365.com", 587, false);
Run Code Online (Sandbox Code Playgroud)

c# office365 mailkit

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

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