-1

我正在循环使用 aspose 电子邮件客户端(使用 c#)向 IIS smtp 服务器 Windows 2012 R2(Server1)发送大约 5000 封电子邮件。触发的电子邮件在 smtp 服务器队列中排队。从该队列中,它们都被发送到同一个目的地(Oracle 电子邮件归档服务器 - Server2)。

问题是 - 大约 700-800 封(每次随机)电子邮件在传输过程中丢失。

问题 - 有什么方法可以将 Server1 上收到的所有电子邮件排队,以确保它收到完整的 5000 封电子邮件?任何设置,所以它可以接收电子邮件但不转发它们?

smtp 电子邮件是否不能保证发送给收件人?由于没有节流机制,我认为我通过发送大量电子邮件来阻塞网络,然后电子邮件在网络中丢失。如果是这样,是否有一种机制可以将 smtp 服务器配置为缓慢处理队列。发出几个然后等待等等。

非常感谢这方面的任何帮助。

提前致谢。

4

1 回答 1

0

@阿廷,

Aspose.Email 还允许您以批量的形式发送电子邮件。此外,它还取决于服务器端它可以在任何给定时间处理多少批量电子邮件,以避免任何电子邮件轰炸。服务器端可能有设置。但是,从 Aspose.Email 的角度来看,您可以考虑使用以下示例代码,而不是通过循环发送。您可以将大块电子邮件分成小块,然后通过 Aspose.Email 提供的批量电子邮件发送选项发送。

SmtpClient client = new SmtpClient("mail.server.com", 25, "Username", "Password");

//Create instances of MailMessage class and Specify To, From, Subject and Message
MailMessage message1 = new MailMessage("msg1@from.com", "msg1@to.com", "Subject1", "message1, how are you?");
MailMessage message2 = new MailMessage("msg1@from.com", "msg2@to.com", "Subject2", "message2, how are you?");
MailMessage message3 = new MailMessage("msg1@from.com", "msg3@to.com", "Subject3", "message3, how are you?");

//Create an instance of MailMessageCollection class
MailMessageCollection manyMsg = new MailMessageCollection();
manyMsg.Add(message1);
manyMsg.Add(message2);
manyMsg.Add(message3);

//Use client.BulkSend function to complete the bulk send task
try
{
 // Send Message using BulkSend method
 client.Send(manyMsg);                
 Console.WriteLine("Message sent");
}
catch (Exception ex)
{
 Trace.WriteLine(ex.ToString());
}
于 2019-04-03T04:35:42.777 回答