小编shi*_*nax的帖子

服务器超时后,c#中的电子邮件发送服务无法恢复

几个月来我一直有这个问题,这让我疯了.我有一个用C#(.NET 4.5)编写的Windows服务,它基本上使用Outlook帐户发送电子邮件(我认为它是一个office365服务).我知道"凭证顺序"问题,这对我没有影响(许多电子邮件发送正确).

该服务正确启动并开始发送电子邮件.有时当有太多时,我得到服务器错误等待,服务等待几分钟并继续完全自己.

在这些情况下,我得到错误A:

 System.Net.Mail.SmtpException: The operation has timed out.
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   at Cobranzas.WinService.Email.SendEmail(String subject, String body, String mailTo, String attPath)
   at Cobranzas.WinService.CobranzasEmailService.SendEmails(IEnumerable`1 toSend, RepositoryEf emailRepo)
Run Code Online (Sandbox Code Playgroud)

问题:有时,我无法找到模式,它每隔几天发生一次,它会出现超时错误,并且永远不会恢复(重新启动服务会立即修复它).所有后续发送尝试都失败并出现相同的错误.在这种情况下,我混合了错误A和:

 System.Net.Mail.SmtpException: Failure sending mail. ---> System.Net.WebException: The operation has timed out.
   at System.Net.ConnectionPool.Get(Object owningObject, Int32 result, Boolean& continueLoop, WaitHandle[]& waitHandles)
   at System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout)
   at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint)
   at System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint)
   at System.Net.Mail.SmtpClient.GetConnection()
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   --- End of inner exception stack trace ---
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   at …
Run Code Online (Sandbox Code Playgroud)

c# email smtpclient .net-4.5

11
推荐指数
1
解决办法
2296
查看次数

无法将我的凭据传递给AWS PHP SDK

我安装了AWS PHP SDK并尝试使用SES.我的问题是,它(显然)~/.aws/credentials无论我做什么都试图阅读.我目前有这个代码:

$S3_AK = getenv('S3_AK');
$S3_PK = getenv('S3_PK');
$profile = 'default';
$path = '/home/franco/public/site/default.ini';
$provider = CredentialProvider::ini($profile, $path);
$provider = CredentialProvider::memoize($provider);
$client = SesClient::factory(array(
      'profile' => 'default',
      'region' => 'us-east-1',
      'version' => "2010-12-01",
      'credentials' => [
        'key'    => $S3_AK,
        'secret' => $S3_PK,
      ]
  )); 
Run Code Online (Sandbox Code Playgroud)

我仍然得到"无法读取来自〜/ .aws/credentials的凭据"错误(过了一段时间).

当然,我尝试了'凭证'=> $提供商,这是一个想法,但由于它不起作用我恢复了硬编码凭证.我已经抛弃了$ S3_AK和$ S3_PK并且它们很好,我实际上正在为S3使用它们,但是我有Zend的包装器.我已经尝试了〜/ .aws/credentials(没有".ini")来获得相同的结果.这两个文件都拥有777权限.

奇怪的信息:我必须将内存限制设置为-1,这样就可以var_dump异常.异常的html大约是200mb.

我更喜欢使用环境变量,尽管凭证文件很好.我只是不明白为什么它似乎试图读取文件,即使我已经硬编码凭证.

编辑:所以一位朋友告诉我这个,我删除了配置文件,并修改了try/catch,发现客户端似乎是正确创建的,错误来自于尝试实际发送电子邮件.

php zend-framework amazon-web-services amazon-ses aws-php-sdk

2
推荐指数
2
解决办法
1351
查看次数