借助以下链接
错误:消息失败:553 不允许作为 @ 进行中继。 - NodeMail Zoho
https://help.zoho.com/portal/en/community/topic/hi-i-have-an-error-code-553
我发现我的代码在电子邮件发送中缺少 From 标签,因此我收到错误 Relaying Disallowed @。
我使用 .NET 6 Api 使用#mailkit 发送电子邮件。早些时候,我使用 M365 发送电子邮件,它工作正常,并且代码中不需要 From Tag。但后来我转移到 Zoho mail,我们开始收到转发 Disallowed @ 错误。在上面提到的链接的帮助下,我发现 from 标签是必需的。我尝试从链接中提到的标签添加
'"senderNameSameLikeTheZohoOne<[email protected]>'
,也尝试了这样的"from: '"senderNameSameLikeTheZohoOne" [email protected]'".
第一种方法给出的结果与Relaying Disallowed @相同,第二种方法给出了MimeMessage mailkit上无效解析令牌的异常。
最后我注意到下面的代码中缺少 From 标签。因为正如我提到的,我正在使用 M365 电子邮件发送电子邮件,并且工作正常。但对于#Zoho,我需要在代码中添加此标记。
email.From.Add(MailboxAddress.Parse(request.From) ??_mailSettings.EmailFrom));
var email = new MimeMessage();
email.Sender = MailboxAddress.Parse(request.From ?? _mailSettings.EmailFrom);
email.From.Add(MailboxAddress.Parse(request.From ??_mailSettings.EmailFrom));
email.To.Add(MailboxAddress.Parse(request.To));
email.Subject = request.Subject;
var builder = new BodyBuilder();
builder.HtmlBody = request.Body;
email.Body = builder.ToMessageBody();
using var smtp = new SmtpClient();
//smtp.Connect(_mailSettings.SmtpHost, _mailSettings.SmtpPort, SecureSocketOptions.StartTls);
smtp.Connect(_mailSettings.SmtpHost, _mailSettings.SmtpPort, SecureSocketOptions.SslOnConnect);
smtp.Authenticate(_mailSettings.SmtpUser, _mailSettings.SmtpPass);
await smtp.SendAsync(email);
smtp.Disconnect(true);
我希望这对使用 mailkit 和 C# 的人有所帮助。