无法在 Mimekit 中发送邮件
Posted
技术标签:
【中文标题】无法在 Mimekit 中发送邮件【英文标题】:Cannot sent mail in Mimekit 【发布时间】:2021-12-05 12:32:43 【问题描述】:使用以下 MimeKit 代码从 c# 发送邮件时
var message = new MimeMessage();
message.From.Add(new MailboxAddress(FromAddress, "Notification"));
foreach (var address in Toaddress.Split(','))
message.To.Add(new MailboxAddress(address.Trim(), ""));
message.Subject = Subject;
message.Body = new TextPart("plain") Text = "Test Message" ;
using (var client = new SmtpClient())
client.Connect(EmailHostName, Portnumber, SecureSocketOptions.StartTls);
client.Authenticate(UserName, Password);
client.Send(message);
client.Disconnect(true);
我得到以下异常
MimeKit.ParseException: Invalid addr-spec token at offset 0
at MimeKit.InternetAddress.TryParseAddrspec(Byte[] text, Int32& index, Int32 endIndex, Byte[] sentinels, Boolean throwOnError, String& addrspec, Int32& at)
at MimeKit.MailboxAddress.set_Address(String value)
at MimeKit.MailboxAddress..ctor(Encoding encoding, String name, String address)
at MimeKit.MailboxAddress..ctor(String name, String address)
我尝试了网上不同的解决方案,但都没有成功,请大家帮忙解决问题
尝试过的解决方案:
Unable to parse tnef part from MimeMessage
https://www.csharpcodi.com/csharp-examples/MimeKit.InternetAddress.TryParseLocalPart(byte[],%20ref%20int,%20int,%20bool,%20out%20string)/(没用)
https://www.nopcommerce.com/en/boards/topic/90019/email-error-invalid-addr-spec-token-at-offset-0-v43(不使用)
编辑:
问题是因为message.From.Add(new MailboxAddress(FromAddress, "Notification"));
它的顺序错误所以改为message.From.Add(new MailboxAddress("Notification",FromAddress));
来解决错误
【问题讨论】:
您能否提供更多有关您尝试过什么的详细信息?运行此代码时您提供了哪些地址(一些示例)? 您是否调试过FromAddress
和Toaddress
,检查它们是否/包含有效的电子邮件地址?
【参考方案1】:
我认为您的 MailboxAddress ctor 参数顺序错误。
https://github.com/jstedfast/MimeKit/blob/master/MimeKit/MailboxAddress.cs#L163
public MailboxAddress (string name, string address) ...
【讨论】:
非常感谢它成功了,但是有一个新的例外"The SMTP server has unexpectedly disconnected."
需要更改SMTP的配置以上是关于无法在 Mimekit 中发送邮件的主要内容,如果未能解决你的问题,请参考以下文章
使用 Mailkit 和 Mimekit 收集 SMTP 服务器
如何查找电子邮件转发到的电子邮件地址(在 MimeKit 中)
使用 mailkit 发送的多部分电子邮件的文本/纯文本版本未正确接收