我正在尝试使用MailKit库在Xamarin.Forms中发送电子邮件。但是,当执行命中ConnectAsync()方法时,我得到以下异常:
System.MissingMethodException:字符串[] string.Split(char,System.StringSplitOptions)
以前有没有人遇到过。我不知道任何缺少的方法。
以下是我在.net标准项目中的代码:
using MailKit.Net.Smtp; using MimeKit; using MimeKit.Text; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading.Tasks; public async Task SendAsync(EmailMessage emailMessage) { try { var message = new MimeMessage(); message.To.Add(new MailboxAddress("Recipient", "xamapp@icloud.com")); message.From.Add(new MailboxAddress("Sender", "xamapp.no.reply@gmail.com")); message.Subject = "Test!!"; message.Body = new TextPart(TextFormat.Html) { Text = "Test message" }; using (var emailClient = new SmtpClient()) { await emailClient.ConnectAsync("smtp.gmail.com", 465, true); emailClient.AuthenticationMechanisms.Remove("XOAUTH2"); await emailClient.AuthenticateAsync("username", "password"); await emailClient.SendAsync(message); emailClient.Disconnect(true); } } catch (SmtpCommandException ex) { Debug.WriteLine($"Error sending email: {ex.Message}"); Debug.WriteLine($"StatusCode: {ex.StatusCode}"); } catch (SmtpProtocolException ex) { Debug.WriteLine($"Protocol error while sending email: {ex.Message}"); } }
答案 0 :(得分:0)
类似Xamarin.Forms项目的声音正在引入不匹配的.NET框架版本的库(可能是错误的MimeKit和/或MailKit框架版本)。
检查以查看您的构建从nuget包中提取了哪些确切的MimeKit和MailKit程序集。如果您不熟悉nuget的工作方式,则每个nuget可以包含为不同框架构建的库的多个副本。
例如,MimeKit nuget具有为以下框架构建的程序集:
MailKit nuget包含为以下框架构建的程序集:
确保您的项目同时为两个nuget而不是混合匹配引入netstandard2.0程序集。