C#学习教程:通过SmtpClient.Send()进行循环我的代码如下所示://从数据库中获取订阅者,大约10-20。varmalingList=Bll.GetAllSubscribers();varclient=newSmtpClient();//使用cridenttails等在SmtpClient上设置设置foreach(varsubscriberinmailingList){varmessage=newMailMessage();//设置消息,设置接收者,yadayadaClient.Send(message);}客户端.Dispose();使用“假smtp”Papercut进行测试时出现此错误:发送邮件失败。无法将数据写入传输连接:我想做的是保持SMTP连接打开。没有必要为每封电子邮件重现“握手”。我不是100确定但是。这行得通吗?我想我有另一个项目可以实现这个。Papercut库将无法促进您正在寻找的行为,因为每次调用Sendit都会断开当前连接并与服务器建立另一个连接并进行握手。以下是CodePlex存储库的来源:publicvoidSend(){stringresponse;连接(会话。发件人,25);响应=响应();如果(response.Substring(0,3)!="220")thrownewSmtpException(response);Write("HELO{0}rn",Util.GetIPAddress());响应=响应();如果(response.Substring(0,3)!="250")thrownewSmtpException(response);Write("MAILFROM:rn",session.MailFrom);响应=响应();如果(response.Substring(0,3)!="250")thrownewSmtpException(response);session.Recipients.ForEach(address=>{Write("RCPTTO:rn",address);response=Response();if(response.Substring(0,3)!="250")抛出新的SmtpException(response);});写(“DATArn”);响应=响应();如果(response.Substring(0,3)!="354")thrownewSmtpException(response);NetworkStream流=GetStream();stream.Write(session.Message,0,session.Message.Length);写("rn.rn");响应=响应();如果(response.Substring(0,3)!="250")thrownewSmtpException(response);写(“退出”);响应=响应();如果(response.IndexOf("221")==-1)thrownewSmtpException(response);您当然可以更改源代码来执行您的操作我认为这可能与发送批量邮件的smtp客户端的限制有关。也许您可以在20-30封电子邮件后偶尔与客户打交道?答案来自:发送邮件失败。无法向传输连接写入数据以上是C#学习教程:循环遍历SmtpClient.Send()共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文来自网络合集,不代表立场,如涉及侵权,请点击右转联系管理员删除。如需转载请注明出处:
