Я пытаюсь разослать платежные ведомости всем нашим сотрудникам, но во многих аккаунтах Gmail электронная почта задерживается или блокируется.
Я проверил учетную запись GSuite и получил письмо, но вв представлении «оригинальная электронная почта» электронной почты отображаются следующие строки:
ARC-Authentication-Results: i=1; mx.google.com;
spf=permerror (google.com: permanent error in processing during lookup
of no-reply@our-domain.com.au: mail.optusnet.com.au not found)
smtp.mailfrom=no-reply@our-domain.com.au
и
Received-SPF: permerror (google.com: permanent error in processing during
lookup of no-reply@our-domain.com.au: mail.optusnet.com.au not found)
client-ip=000.000.00.000;
У нас есть действительная запись SPF, позволяющая отправлять электронные письма с нашего сервера через O365.
Вот класс, который я использую для отправки электронных писем.Я использую цикл Parallel.ForEach для отправки электронных писем.Максимальное количество потоков - 3 или 4.
public class EmailService : IDisposable
{
public const string DefaultFromAddress = "no-reply@our-domain.com.au";
private const string Office365Host = "smtp.office365.com";
private const int Office365Port = 587;
private const string Office365UserName = "O365_App_UserName";
private const string Office365Password = @"--Password--";
//private readonly SmtpClient _smtpClient;
private SmtpClient _smtpClient;
private readonly Logger _logger;
public EmailService()
{
_logger = LogManager.GetCurrentClassLogger();
_smtpClient = new SmtpClient
{
Host = Office365Host,
Port = Office365Port,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(Office365UserName, Office365Password),
DeliveryMethod = SmtpDeliveryMethod.Network,
EnableSsl = true,
TargetName = "STARTTLS/smtp.office365.com"
};
}
public bool SendEmail(MailMessage message)
{
try
{
_smtpClient.Send(message);
}
catch (Exception ex)
{
_logger.Error(ex, $"Failed to send email: from: {message.From.Address}, to:{message.To.First()}. more details:{ex.InnerException}");
return false;
}
return true;
}
public void Dispose()
{
_smtpClient.Dispose();
}
}
Вот код в цикле, который отправляет составленные сообщения:
using (EmailService emailService = new EmailService())
{
employee.EmailSent = emailService.SendEmail(mailMessage);
}
Что мне здесь не хватает?Нужно ли нам что-то делать с записями SPF для mail.optusnet.com.au?
Будем весьма благодарны за любые другие предложения.Спасибо