我正在循环使用aspose电子邮件客户端(使用c#)向IIS smtp服务器Windows 2012 R2(Server1)发送大约5000封电子邮件。电子邮件在smtp服务器队列中触发了队列。从该队列中,它们都被发送到同一目的地(一个Oracle电子邮件归档服务器-Server2)。
问题是-大约700-800(每次随机)电子邮件在传输中丢失。
问题- 有什么办法可以使Server1上收到的所有电子邮件排队,以确保它收到完整的5000封电子邮件?有任何设置,以便它可以接收电子邮件但不转发吗?
是否不能保证将smtp电子邮件传递给收件人?由于没有限制机制,我认为我正在通过发送大量电子邮件来阻塞网络,然后在网络中丢失了电子邮件。如果是这样,是否有一种机制可以将smtp服务器配置为缓慢处理队列。发出一些然后等待等等。
在这方面的任何帮助都将受到赞赏。
谢谢。
答案 0 :(得分:0)
@Atin,
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());
}